一直以來,Android最大的特點之一就是可以定製UI元素,保持個人應用程式的視覺一致性。
隨著Android4.4的釋出,谷歌最終去除了應用程式執行時系統UI中的高亮藍(bright holo blue)效果。這項技術很快將應用於所有的App,但是在你釋出下一個版本前,現在就可以利用這項新的半透明系統欄使你的App與眾不同。有兩種樣式可以操作該系統欄:windowTranslucentStatus
和windowTranslucentNavigation
。
在主題(theme)中設定windowTranslucentStatus
為true
將填充頂部的狀態列區域。(有虛擬按鍵的裝置上)設定windowTranslucentNavigation
為true
將填充底部導航欄的區域。這兩種樣式預設會把應用的內容放到系統欄下面。如果僅僅想擴充套件背景樣式到系統欄下,設定fitsSystemWindows
為true
會增加檢視的Padding值讓你的佈局恢復正常大小,並且可以把背景擴大。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
; html-script: false ] <resources> <!-- Base application theme. --> <style name="AppTheme" parent="android:Theme.Holo.Light"> <item name="android:windowBackground">@color/green</item> <item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentNavigation">true</item> <item name="android:fitsSystemWindows">true</item> <item name="android:actionBarStyle">@style/ActionBar.Solid.GreenStyle</item> </style> <style name="ActionBar.Solid.GreenStyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid"> <item name="android:background">@color/green_accent</item> </style> </resources> |
下一步要做什麼呢?
這就引出了一個重要的關於設計的討論。可以擴充套件內容到系統UI並不意味著我們應該這樣做。很多情況下,這種風格設計並不合適。如果你把工具欄擴充套件到狀態列下,這會是一個很糟糕的設計。對於大多數使用action bar的場景來說,一個浮於背景之上的可見action bar作為整個視窗的背景會很突兀。當然,也有例外。
Android行為設計方面的幾個哥們,用半透明工具欄做了個小例子。這個特殊的例子效果很好,真正強調了佔據整個螢幕的內容,而且並沒有像全屏和沉浸模式一樣讓導航顯得很混亂,
Jeff Gilfelt已經寫了個輔助系統工具欄著色的函式庫,他巧妙地將檢視放到系統UI下。如果一些UI內容超出了螢幕的邊界,這個庫可以輕鬆的為導航區域著色,除此之外,還可以輕鬆地把工具欄和系統UI結合起來。即使你不打算著色系統工具欄,看一看Jeff的程式碼也是相當值得的,可以學習如何手動獲取狀態列、工具欄和導航區域的高度。
這幾個新的樣式可以讓你很好地擴充套件自己的應用檢視,比正常的視窗都要大。只需在主題中增加幾行程式碼就可以輕鬆實現,所以我鼓勵大家都嘗試一下。