1. 程式人生 > >狀態列與全屏的處理

狀態列與全屏的處理

概述

在做專案功能的時候,做到有關頁面全屏的處理時,發現狀態列的下拉會遮住全屏頁面一小部分檢視,這樣的話可能會影響遮住的那部分的功能的實現。那怎麼辦呢?現在我們就來處理一下這個問題。

例項

廢話不多說,直接來講吧。首先我們在manifest中設定Activity的主題為 android:theme=”@android:style/Theme.NoTitleBar”>,在Activity中setContentView之前設定 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE),這樣是設定狀態列一直可見,就是說頂部留有位置給狀態列。我們來看看一看其它的flag

現在我們來逐一說一說這些flag的作用

1. View.SYSTEM_UI_FLAG_VISIBLE:顯示狀態列

2. View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏顯示,且狀態列被隱藏覆蓋掉,下拉狀態列的時候,會覆蓋頂部佈局。

3. View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隱藏虛擬按鍵(導航欄),這個不會隱藏狀態列。有些手機會用虛擬按鍵來代替物理按鍵。

4. View.SYSTEM_UI_FLAG_IMMERSIVE:沉浸式設計,需結合其它的flag來使用。

5. View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY:粘性沉浸式設計,需結合其它的flag來使用。

6. View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏顯示,但狀態列不會被隱藏覆蓋,狀態列依然可見,Activity頂端佈局部分會被狀態遮住。

7. View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN。

8. View.SYSTEM_UI_FLAG_LAYOUT_STABLE:不管狀態列隱藏與否,狀態列的位置都會保留。

9. View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR:效果同View.SYSTEM_UI_FLAG_VISIBLE。但是狀態列上的圖示會被隱藏。

10. View.SYSTEM_UI_FLAG_LOW_PROFILE:狀態列顯示處於低能顯示狀態(low profile模式),狀態列上一些圖示顯示會被隱藏。

如果你在manifest中設定Activity的theme為Fullscreen,你會發現你在程式碼中設定各種flag都不會生效。還有一個就是要注意不同的flag適用的版本,你還可以多個flag一起用來滿足你的需求。

總結

現在我在開發過程中遇到,當在彈出Dialog或者消失的時候,虛擬按鍵會彈出來,不能達到手動去彈出虛擬按鍵的時候才彈出,就算自己在做一遍處理,虛擬按鍵會先彈出在消失,使用者體驗不好。我看了一下游戲的介面,他們可以做到切換場景的時候,虛擬按鍵不會彈出。現在正在尋求解決方法,希望知道的童鞋給我留言,多謝。