Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android官方開發文檔Training系列課程中文版:管理系統UI之隱藏狀態條

Android官方開發文檔Training系列課程中文版:管理系統UI之隱藏狀態條

編輯:關於Android編程

這節課將會介紹如何隱藏不同的版本的狀態條。隱藏狀態條可以使內容展示區域更大,因此可以提供一種更強的身臨其境的用戶體驗。

含有狀態條的APP:

\

隱藏狀態條的APP,注意這裡的ActionBar同樣也隱藏了。絕不要在沒有狀態條的時候還顯示ActionBar:

在Android 4.0以下的版本中隱藏狀態條

開發者可以通過設置WindowManager的標志來隱藏Android 4.0之前的狀態條。除此之外在清單文件中設置Activity的主題也可以達到同樣的效果。如果需要狀態條一直保持隱藏狀態,那麼在清單文件中設置主題是我們的首選方式:


    ...

使用Activity主題的優勢在於:

相對於動態設置來說更易於維護也減小了出錯的風險。 這會使得UI轉場更加平滑,因為系統在實例化Activity之前J就已經得到了它需要的UI渲染信息(狀態條隱藏等等)。

開發者可以通過設置WindowManager的標志來達到同樣的目的。這種方法適合用戶與APP交互的時候使用。

public class MainActivity extends Activity {
    @Override
    protected 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即可。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved