1. 程式人生 > >(轉)Android中系統狀態列的隱藏和顯示

(轉)Android中系統狀態列的隱藏和顯示

Android中系統狀態列的隱藏和顯示
尤其視訊類APP,需要實現切換到橫屏後,隱藏系統狀態列,全屏顯示,以實現看更大畫面的視訊。當切換回豎屏後,又顯示狀態列。那麼如何實現呢?

網上流傳著很多種做法。比如: 
1、在AndroidManifest.xml檔案中修改theme為android:theme=”@android:style/Theme.NoTitleBar.Fullscreen” 
2、在setContentView方法前執行如下程式碼:

requestWindowFeature(Window.FEATURE_NO_TITLE) 
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

3、通過View的setSystemUiVisibility方法 
4、通過如下程式碼實現狀態列的隱藏和顯示:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) //隱藏狀態列 
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) //顯示狀態列

在我的專案中是要實現如下需求:在當前Activity中,切換到橫屏後,不能銷燬Activity再重新初始化,並且實現隱藏系統狀態列,全屏顯示;當切換回豎屏後,又顯示狀態列。另外,我不需要隱藏標題欄。 
因此,方法1、2均不適合我。方法3,我採用過,呼叫setSystemUiVisibility方法,該方法傳入的引數可以為:

View.SYSTEM_UI_FLAG_VISIBLE:顯示狀態列,Activity不全屏顯示(恢復到有狀態的正常情況)。
View.INVISIBLE:隱藏狀態列,同時Activity會伸展全屏顯示。
View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏顯示,且狀態列被隱藏覆蓋掉。
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏顯示,但狀態列不會被隱藏覆蓋,狀態列依然可見,Activity頂端佈局部分會被狀態遮住。
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隱藏虛擬按鍵(導航欄)。有些手機會用虛擬按鍵來代替物理按鍵。
View.SYSTEM_UI_FLAG_LOW_PROFILE:狀態列顯示處於低能顯示狀態(low profile模式),狀態列上一些圖示顯示會被隱藏。
這裡我需要傳入的是View.SYSTEM_UI_FLAG_FULLSCREEN,可是當我傳入該引數後,結果是:只是狀態列消失了,但是位置還在。(測試手機:華為榮耀8 系統是基於Android 7.0的EMUI 5.0;三星galaxy s6 系統是Android 6.0)

最後,使用方法4,成功滿足需求
--------------------- 
作者:zdj_Develop 
來源:CSDN 
原文:https://blog.csdn.net/zdj_develop/article/details/64920441 
版權宣告:本文為博主原創文章,轉載請附上博文連結!