你說你看到了沉浸模式,你可能只是見到鬼了

我都不敢相信,現(xiàn)在 2015 年快過一半了,還有不少所謂 Android 愛好者分不清“沉浸模式”和“透明欄”之間的區(qū)別。
那好,我們來好好捋一捋“沉浸模式”究竟是個什么玩意。
什么是沉浸模式?
從 Android 4.4 開始,Android 為 “setSystemUiVisibility()” 提供了一個新的標(biāo)記 “SYSTEM_UI_FLAG_IMMERSIVE”,就是我們所談的 “Immersive Mode”,也就是沉浸模式,全稱為 “Immersive Full-Screen Mode” 。
Immersive Full-Screen Mode
Google 提供這個新模式的初衷,是為了讓應(yīng)用能夠?qū)崿F(xiàn)真正完整的全屏模式體驗。
之前 Android 靠兩個標(biāo)記實(shí)現(xiàn)全屏模式,一個是 “SYSTEM_UI_FLAG_FULLSCREEN”,另一個是 “SYSTEM_UI_FLAG_HIDE_NAVIGATION”(僅適用于使用導(dǎo)航欄的設(shè)備,即虛擬按鍵) 。
這兩個標(biāo)記都存在一些問題,例如使用第一個標(biāo)記的時候,除非 App 提供暫時退出全屏模式的功能(例如部分電子書軟件中點(diǎn)擊一次屏幕中央位置),用戶是一直都沒法看見狀態(tài)欄的。這樣,如果用戶想去看看通知中心有什么通知,那就必須點(diǎn)擊一次屏幕,顯示狀態(tài)欄,然后才能調(diào)出通知中心。
而第二個標(biāo)記的問題在于,Google 認(rèn)為導(dǎo)航欄對于用戶來說是十分重要的,所以只會短暫隱藏導(dǎo)航欄。一旦用戶做其他操作,例如點(diǎn)擊一次屏幕,導(dǎo)航欄就會馬上被重新調(diào)出。這樣的設(shè)定對于看圖軟件,視頻軟件等等沒什么大問題,但是對于游戲之類用戶需要經(jīng)常點(diǎn)擊屏幕的 App,那就幾乎是悲劇了——這也是為什么你在 Android 4.4 之前找不到什么全屏模式會自動隱藏導(dǎo)航欄的應(yīng)用。
那么 Google 面對這樣的問題自然也不會坐視不管。還記得 iOS 是怎么處理用戶在全屏應(yīng)用下調(diào)出通知中心/控制中心操作的么?對,用戶做一個向內(nèi)滑動的手勢,一個小箭頭就會出現(xiàn),在不影響當(dāng)前應(yīng)用全屏的情況下引導(dǎo)用戶操作。
iOS 在全屏的情況下,用戶在原有狀態(tài)欄區(qū)域向內(nèi)滑動,會調(diào)出小箭頭指引用戶打開通知中心。
Google 借鑒了 iOS 的邏輯,4.4 之后加入的這個 Immersive Full-Screen Mode 允許用戶在應(yīng)用全屏的情況下,通過在原有的狀態(tài)欄/導(dǎo)航欄區(qū)域內(nèi)做向內(nèi)滑動的手勢來實(shí)現(xiàn)短暫調(diào)出狀態(tài)欄和導(dǎo)航欄的操作,且不會影響應(yīng)用的正常全屏,短暫調(diào)出的狀態(tài)欄和導(dǎo)航欄會呈半透明狀態(tài),并且在一段時間內(nèi)或者用戶與應(yīng)用內(nèi)元素進(jìn)行互動的情況下自動隱藏。
短暫調(diào)出的狀態(tài)欄和導(dǎo)航欄,會在特定情況下自動隱藏
這個新加入的特性理所當(dāng)然地受到了廣泛好評:從此 Android 終于可以在全屏應(yīng)用下不影響用戶的正常操作了,難怪 Android Developers 頁面中會這么描述 Immersive Full-Screen Mode:
…lets your app go truly “full screen.”
當(dāng)然,講了這么多有關(guān)“沉浸模式”的介紹,目的并不是要告訴你“沉浸模式”有多么多么好,而是為了告訴你,目前你們所說的“支持沉浸模式”“沉浸狀態(tài)欄”等等,和真正的“沉浸模式”,即 Immersive Full-Screen Mode 是一點(diǎn)關(guān)系都沒有的。
接下來我要告訴你們,你們口中的“沉浸”究竟是個什么東西。
“沉浸狀態(tài)欄”究竟是什么?
Google 在 Android 4.4 的 API 描述頁面里提到了“Translucent system UI styling”,即半透明化的系統(tǒng)UI風(fēng)格。
這個“半透明化”包括了狀態(tài)欄和通知欄,當(dāng)開發(fā)者讓應(yīng)用支持這個新特性的時候,狀態(tài)欄和導(dǎo)航欄可以單獨(dú)/同時變?yōu)闈u變的半透明樣式。
半透明后的狀態(tài)欄,顯示出漸變的半透明式背景
說到這里大家應(yīng)該都明白了——沒錯,這就是你們口中經(jīng)常提到的“沉浸模式”“沉浸狀態(tài)欄”。記住了,他們的學(xué)名是”Translucent Bars”,透明欄,包括了狀態(tài)欄(Translucent status bar)和導(dǎo)航欄(Translucent navigation bar)。
在 Android 5.0 之后引入了 Material Design,狀態(tài)欄和導(dǎo)航欄也玩出了更多花樣?,F(xiàn)在除了原有的“半透明”模式以外,還有“全透明”以及“變色”模式,一種會完全隱藏背景,另一種可以取色作為背景顏色。
不同的狀態(tài)欄風(fēng)格
不同的導(dǎo)航欄風(fēng)格,可以注意到加入了全透明(Transparent)背景
有關(guān)更多 Material Design 中關(guān)于系統(tǒng)欄的描述可以參考這里
總結(jié)
如果你認(rèn)真看到了這里,那么你應(yīng)該明白了一個重要的事情:此“沉浸”非彼“沉浸”。
真正的沉浸模式,指的是一種全屏模式,而你一般在開發(fā)者/愛好者/用戶那里聽到的“沉浸模式”絕大部分情況下指的是“半透明欄”或者是 Android 5.0 之后加入的“全透明/變色欄”。至于所謂“沉浸式狀態(tài)欄/導(dǎo)航欄”之類的描述,則完全是無稽之談。
關(guān)于國人對于“半透明欄”和“沉浸模式”之間的誤解是怎么產(chǎn)生的,我并不清楚,或許是當(dāng)時某個科技網(wǎng)站的小編理解錯誤,翻譯新聞時將兩個東西扯在了一起;也或許是某個開發(fā)者在介紹透明欄時誤以為“沉浸模式”是恰當(dāng)?shù)姆g,但總之,錯并不是問題,知錯不改才是問題。
如果你能理解這一點(diǎn),請再也不要弄混這兩個完全不一樣的東西了。
作者:Micromacer
來源:http://www.jianshu.com/p/96f623acd7c3
然而區(qū)分不區(qū)分這個并沒有什么卵用,用戶用著爽,哪管你是什么模式
能不能多發(fā)些干貨啊,老是發(fā)這無聊的文章看了也沒意思
贊同