安卓隱藏狀態欄


我們在開發游戲的時候一般都是全屏顯示,但是在操作下拉顯示狀態欄,切后台之后再切回來發現狀態欄還存在,並沒有消失。

在 Android 4.1(API 級別 16)及更高版本中隱藏狀態欄可以使用setSystemUiVisibility()

setSystemUiVisibility() 在單個視圖級別設置界面標記;這些設置會聚合到窗口級別。與使用 WindowManager 標記相比,使用 setSystemUiVisibility() 設置界面標記讓您可以更精細地控制系統欄。

int flag = 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 // hide
                | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
getWindow().getDecorView().setSystemUiVisibility(flag);

setSystemUiVisibility的相關屬性

View.SYSTEM_UI_FLAG_HIDE_NAVIGATION //隱藏導航欄
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
View.SYSTEM_UI_LAYOUT_FLAGS
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN //全屏,狀態欄會蓋在布局上
View.SYSTEM_UI_FLAG_FULLSCREEN //全屏,狀態欄和導航欄不顯示
View.SYSTEM_UI_FLAG_VISIBLE //顯示狀態欄和導航欄
View.SYSTEM_UI_FLAG_LAYOUT_STABLE // 保持View Layout不變,隱藏狀態欄或者導航欄后,View不會拉伸
View.SYSTEM_UI_FLAG_LOW_PROFILE //狀態欄:低能顯示狀態,狀態欄上一些圖標顯示會被隱藏
View.SYSTEM_UI_FLAG_IMMERSIVE //只有當設置了SYSTEM_UI_FLAG_HIDE_NAVIGATION才起作用。如果沒有設置,任意的View相互動作都退出SYSTEM_UI_FLAG_HIDE_NAVIGATION模式。如果設置就不會退出
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY //只有當設置了SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION 時起作用。如果沒有設置,任意的View相互動作都退出SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION模式

請注意以下幾點:

  • 界面標志被清除后(例如,離開 Activity),如果您希望再次隱藏這些欄,應用需要重置這些標志。請參閱響應界面可見性更改,其中探討了如何監聽界面可見性更改,以便您的應用相應地做出響應。
  • 在不同的位置設置界面標記會產生不同的效果。如果您在 Activity 的 onCreate() 方法中隱藏系統欄,那么當用戶按主屏幕按鈕時,系統欄會重新出現。當用戶重新打開 Activity 后,系統不會調用 onCreate(),因此系統欄仍保持可見。如果您希望在用戶進入和退出 Activity 時繼續保留系統界面更改,請在 onResume() 或 onWindowFocusChanged() 中設置界面標記。
  • 要使方法 setSystemUiVisibility() 生效,您調用它時所在的視圖必須可見。
  • 離開該視圖會導致系統清除使用 setSystemUiVisibility() 設置的標志。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM