動態隱藏/顯示系統狀態列
阿新 • • 發佈:2018-12-23
我只想安安靜靜地看張圖,可是系統欄上的通知、無線/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()