1. 程式人生 > >Android-淺談沉浸式模式

Android-淺談沉浸式模式

背景

那是一個寒冷的季節,“沉浸式”這個詞悄然對映進我的腦海。看著它那高階大氣的樣式,頓時感覺自己眼前一亮,如此高階大氣的設計怎能不學,怎能不用呢?

作用

眾所周知,“沉浸式”是google在Android4.4推出的一種新模式,可以使APP最上方的顯示系統訊息的狀態列(Status Bar)和最下方顯示虛擬按鍵的底部導航欄(Navigation Bar)被隱藏掉(當然也可以動態顯示和消失),使APP內容能夠最大化的呈現在客戶面前,不被其他非APP的內容所幹擾!

過程

看過網上去多關於“沉浸式”模式的講解,但是說來說去就個人理解來說沉浸式不就是全面屏嘛!非搞得那麼囉嗦麻煩!

既然把它理解為全面屏了也當然也得有個樣子啦!

1.新建一個專案,XML佈局裡面一個ImageView,如圖包含了系統狀態列,APP標題欄、系統底部導航欄


2.首先去掉APP內部的標題欄很簡單,只需在res/values/styles.xml設定主題NoActionBar即可,如圖設定和設定後的效果圖



很明顯,設定為NoActionBar之後,只剩下系統狀態列和底部導航欄了

3.接下來的都要涉及到沉浸式的相關內容了,官方給出了一個非常方便的API:setSystemUiVisibility(int visibility):設定系統UI可見性,這個方法就可以完美得實現沉浸式效果!其中引數主要用到以下幾個:

-VIEW.SYSTEM_UI_FLAG_FULLSCREEN(字面意思是全屏顯示但是僅僅讓頂部狀態列消失)如圖程式碼和效果圖

-VIEW.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN(狀態列位於檢視至上並被隱藏)



但是呢,這有個問題就是在點選螢幕上方的時候,狀態列還是會顯示出來可以明顯看出螢幕整體被壓縮,再點選狀態列螢幕被拉伸狀態列消失,接著看!

-VIEW.SYSTEM_UI_FLAG_HIDE_NAVIGATION(隱藏底部導航欄)結合使用且看程式碼和效果圖

-VIEW.SYSTEM_UI_FLAG_LAYOUT_NAVIGATION(導航欄位於檢視至上並被隱藏)



可以看出狀態列和導航欄都被隱藏掉了,當你螢幕時它們便會顯示出來螢幕明顯被壓縮,點選狀態列或導航欄便會消失螢幕又被拉伸,而且顯示出來的狀態列和導航欄的顏色明顯看著是系統預設的顏色(即我們專案裡面res/values/colors.xml裡面的預設顏色),繼續看!

-VIEW.SYSTEM_UI_FLAG_IMMERSIVE(當導航或狀態列被顯示出來後不會自動隱藏掉)

-VIEW.SYSTEM_UI_FLAG_IMMERSIVE_STICKY(與前者相反:推薦使用)

最終程式碼和效果如下:



可以看到設定這五個值後效果很明顯,預設開啟時是全屏模式,系統通過監聽手勢操作(在狀態列或導航欄位置下滑或上滑,使被隱藏的欄目顯示出來,同時狀態列和導航欄自動變為半透明狀態,並且會在在3秒後自動隱藏掉)我想這才是真正的沉浸式模式吧!

總結

沉浸式是在Android4.4及其以上版本才能展示出來的效果,多種屬性相互搭配使用才能展示出想要的樣式,當然沉浸式也不僅僅侷限於此,還有更多的內容有待發掘,僅此記下一筆莫怪莫怪(*^▽^*)!