1. 程式人生 > >動態隱藏/顯示系統狀態列

動態隱藏/顯示系統狀態列

這裡寫圖片描述

我只想安安靜靜地看張圖,可是系統欄上的通知、無線/SIM卡等一系列圖示太礙眼了有木有,怎麼可以動態隱藏呢?

模式一:隱藏掉系統狀態列,安安靜靜地做個美男子

    //顯示系統狀態列
    private void showStatusBar() {

        View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION//隱藏狀態列的佈局
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN//內容佈局填滿螢幕 ); } //隱藏系統狀態列 private void hideStatusBar() { View decorView = getWindow().getDecorView(); decorView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION//隱藏狀態列的佈局
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN//內容佈局填滿螢幕 | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION//隱藏狀態列 | View.SYSTEM_UI_FLAG_FULLSCREEN//內容全屏展示 | View.SYSTEM_UI_FLAG_IMMERSIVE ); }

這裡寫圖片描述

模式二:隱藏掉系統通知,顯示時間,看圖又不誤事

    //顯示系統狀態列
    private void showStatusBar() {
        View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(View.VISIBLE);
    }

    //隱藏系統狀態列
    private void hideStatusBar() {
        View decorView = getWindow().getDecorView();
        //設定成低調模式
        decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
    }

這裡寫圖片描述

Tip:

一、DecorView為整個Window介面的最頂層View。
二、DecorView只有一個子元素為LinearLayout。代表整個Window介面,包含通知欄,標題欄,內容顯示欄三塊區域。

三、在使用模式一時,為了防止隱藏掉狀態列後引起內容佈局重新繪製而導致檢視變化,在oncreate()時要先呼叫下showStatusBar()