1. 程式人生 > >Android上透明狀態列,全屏顯示以及沉浸模式

Android上透明狀態列,全屏顯示以及沉浸模式

在Android上為了實現全屏顯示,透明狀態列,沉浸模式等效果,往往需要我們掌握和系統UI顯示隱藏相關的各種Flag。Android上API版本混亂,各種Flag林立。今天我們就來聊聊這些Flags。

在Android Kitkat中引入Immersive Mode


相關API

Window#setFlags
View#setSystemUiVisibility (Android 3.0開始提供)

相關Flag·

WindowManager.LayoutParams.FLAG_FULLSCREEN
隱藏狀態列

View.SYSTEM_UI_FLAG_VISIBLE API 14
預設標記

View.SYSTEM_UI_FLAG_LOW_PROFILE API 14
低調模式, 會隱藏不重要的狀態列圖示

View.SYSTEM_UI_FLAG_LAYOUT_STABLE API 16
保持整個View穩定, 常和控制System UI懸浮, 隱藏的Flags共用, 使View不會因為System UI的變化而重新layout

View.SYSTEM_UI_FLAG_FULLSCREEN API 16
狀態列隱藏,效果同設定WindowManager.LayoutParams.FLAG_FULLSCREEN

View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN API 16


檢視延伸至狀態列區域,狀態列上浮於檢視之上

View.SYSTEM_UI_FLAG_HIDE_NAVIGATION API 14
隱藏導航欄

View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION API 16
檢視延伸至導航欄區域,導航欄上浮於檢視之上

View.SYSTEM_UI_FLAG_IMMERSIVE API 19
沉浸模式, 隱藏狀態列和導航欄, 並且在第一次會彈泡提醒, 並且在狀態列區域滑動可以呼出狀態列(這樣會系統會清楚之前設定的View.SYSTEM_UI_FLAG_FULLSCREEN或View.SYSTEM_UI_FLAG_HIDE_NAVIGATION標誌)。

使之生效,需要和

View.SYSTEM_UI_FLAG_FULLSCREEN,

View.SYSTEM_UI_FLAG_HIDE_NAVIGATION中的一個或兩個同時設定。

View.SYSTEM_UI_FLAG_IMMERSIVE_STIKY API 19
與上面唯一的區別是, 撥出隱藏的狀態列後不會清除之前設定的

View.SYSTEM_UI_FLAG_FULLSCREEN或View.SYSTEM_UI_FLAG_HIDE_NAVIGATION標誌,在一段時間後將再次隱藏系統欄)