Android 沉浸式全屏的實現方法

張志敏的技術專欄發表於2015-03-24

Android 4.4 帶來了沉浸式全屏體驗, 在沉浸式全屏模式下, 狀態列、 虛擬按鍵動態隱藏, 應用可 以使用完整的螢幕空間, 按照 Google 的說法, 給使用者一種 “身臨其境” 的體驗。

Android 4.4 中提供了 IMMERSIVE 和 IMMERSIVE_STICKY 標記, 可以用這兩個標記與SYSTEM_UI_FLAG_HIDE_NAVIGATION 和 SYSTEM_UI_FLAG_FULLSCREEN 一起使用, 來實現沉 浸模式。

注意: 這些標 記在Xamarin.Android 中被對映為 Android.Views.SystemUiFlags 列舉。

普通全屏模式 (Fullscreen)

普通全屏模式通過設定下面的標記位實現:

var uiOpts = SystemUiFlags.LayoutStable
        | SystemUiFlags.LayoutHideNavigation
        | SystemUiFlags.LayoutFullscreen
        | SystemUiFlags.Fullscreen
        | SystemUiFlags.HideNavigation;
Window.DecorView.SystemUiVisibility = uiOpts;

在普通全屏模式下, 應用可以佔據螢幕的全部空間, 當使用者觸控螢幕的任何部分時, 會自動退出全屏模 式, 這種模式比較適用於視訊播放器類應用。

沉浸模式 (Immersive)

沉浸模式通過設定下面的標記位實現:

var uiOpts = uiOpts = SystemUiFlags.LayoutStable
        | SystemUiFlags.LayoutHideNavigation
        | SystemUiFlags.LayoutFullscreen
        | SystemUiFlags.Fullscreen
        | SystemUiFlags.HideNavigation
        | SystemUiFlags.Immersive;
Window.DecorView.SystemUiVisibility = uiOpts;

在沉浸模式下, 應用佔據螢幕的全部空間, 只有當使用者從螢幕的上方邊沿處向下划動時, 才會退出沉浸 模式, 使用者觸控螢幕其它部分是, 不會退出該模式, 這種模式比較適用於閱讀器、 雜誌類應用。

黏性沉浸模式 (Sticky Immersive)

黏性沉浸模式通過設定下面的標記位來實現:

uiOpts = SystemUiFlags.LayoutStable
        | SystemUiFlags.LayoutHideNavigation
        | SystemUiFlags.LayoutFullscreen
        | SystemUiFlags.Fullscreen
        | SystemUiFlags.HideNavigation
        | SystemUiFlags.ImmersiveSticky;
Window.DecorView.SystemUiVisibility = uiOpts;

在黏性沉浸模式下, 應用使用螢幕的全部空間, 當使用者從螢幕的上方邊沿處向下滑動時, 也不會退出該 模式, 但是系統介面 (狀態列、 導航欄) 將會以半透明的效果浮現在應用檢視之上 (如下圖所示), 只有當使用者點選系統介面上的控制元件時, 才會退出黏性沉浸模式。 因此, 這種全屏模式使用與遊戲、 繪 圖類應用。

黏性沉浸模式

根據 Android 開發文件中提到, 應用在使用沉浸模式時最好將 ActionBar 設定為 Overlay 模式, 具體設定可以參考這裡:https://developer.android.com/training/basics/actionbar/overlaying.html

相關文章