Android官方开发文档Training系列课程中文版:管理系统UI之隐藏状态条
原文地址:http://android.xsoftlab.net/training/system-ui/status.html
這節課將會介紹如何隱藏不同的版本的狀態條。隱藏狀態條可以使內容展示區域更大,因此可以提供一種更強的身臨其境的用戶體驗。
含有狀態條的APP:
隱藏狀態條的APP,注意這里的ActionBar同樣也隱藏了。絕不要在沒有狀態條的時候還顯示ActionBar:
在Android 4.0以下的版本中隱藏狀態條
開發者可以通過設置WindowManager的標志來隱藏Android 4.0之前的狀態條。除此之外在清單文件中設置Activity的主題也可以達到同樣的效果。如果需要狀態條一直保持隱藏狀態,那么在清單文件中設置主題是我們的首選方式:
<application ...android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" >... </application>使用Activity主題的優勢在于:
- 相對于動態設置來說更易于維護也減小了出錯的風險。
- 這會使得UI轉場更加平滑,因為系統在實例化Activity之前J就已經得到了它需要的UI渲染信息(狀態條隱藏等等)。
開發者可以通過設置WindowManager的標志來達到同樣的目的。這種方法適合用戶與APP交互的時候使用。
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// If the Android version is lower than Jellybean, use this call to hide// the status bar.if (Build.VERSION.SDK_INT < 16) {getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);}setContentView(R.layout.activity_main);}... }當你設置了WindowManager標志(不論是通過Activity的主題還是動態的設置),那么該標志則會一直保留,直到將該標志移除。
在Android 4.1以上的版本中隱藏狀態條
你可以通過使用setSystemUiVisibility()方法隱藏Android 4.1以上系統的狀態條。setSystemUiVisibility()為單個的View層級設置了UI標志;這些設置被整合進了Window層級。setSystemUiVisibility()比WindowManager的控制粒度更細。下面的代碼隱藏了狀態條:
View decorView = getWindow().getDecorView(); // Hide the status bar. int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(uiOptions); // Remember that you should never show the action bar if the // status bar is hidden, so hide that too if necessary. ActionBar actionBar = getActionBar(); actionBar.hide();要注意以下幾個方面:
- 一旦UI的標志被清除(比如,通過導航的方式離開了Activity),那么如果你想重新隱藏狀態條的話則需要重新設置這些標志。
- 在不同的地方設置UI標志還有些差異。如果在Activity的onCreate()方法中隱藏了系統條,這時用戶返回了桌面,那么系統條則會再次出現。當用戶重新打開Activity時,onCreate()不會被再次調用,所以系統條會一直保持可見。如果你想使系統條還保持原來的狀態的話,則需要在onResume()中或onWindowFocusChanged()中設置相應的標志。
- setSystemUiVisibility()只有在View可見的時候設置才有效。
- 由導航的方式離開View會使由setSystemUiVisibility()設置的標志被清除。
使內容顯示在狀態條的后面
在Android 4.1以上的版本中,你可以將應用的內容區域顯示在狀態條的后面,所以內容區域的尺寸并不會隨著狀態條的隱藏顯示而變化。通過使用SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN標志來實現這一點。你可能還需要使用SYSTEM_UI_FLAG_LAYOUT_STABLE標志來輔助APP維持一個穩定的布局狀態。
當你使用了這項方法,那么你就有責任確保APP UI的邊界部分不會被系統條所遮蓋。在很多情況下,你可以通過在布局文件中添加android:fitsSystemWindows=true屬性來處理這種情況。它會調整父ViewGroup的內邊距來留出系統窗口的空間,這種方法足以應對大多數的應用。
隨著ActionBar的變換同步狀態條
在Android 4.1以上的版本中,為了避免重新調整布局的尺寸,當ActionBar顯示或隱藏時,你可以開啟ActionBar的Overlay Mode。當處于Overlay Mode下時,Activity的布局會使用所有的可用空間,就仿佛ActionBar不存在一樣,系統會將ActionBar繪制在布局的上面一層。這會使布局頂部的部分變的模糊,不過當ActionBar顯示或者隱藏時,系統并不會重寫調整布局的尺寸,這會使得轉場過程無縫對接。
為了可以使ActionBar開啟Overlay Mode,你需要創建一個自定義主題,并需要繼承已有的攜帶ActionBar的主題,并需要將android:windowActionBarOverlay屬性設置為true即可。
總結
以上是生活随笔為你收集整理的Android官方开发文档Training系列课程中文版:管理系统UI之隐藏状态条的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nature发布第一张人类造血干细胞发育
- 下一篇: android sina oauth2.