2019重新Android回顧 UI控制之全屏篇

許多內(nèi)容我們使用全屏展示時(shí)會(huì)得到更好的體驗(yàn)叼耙,如“游戲”腕窥,“視頻”粒没,“圖片”筛婉,“書籍”,“幻燈片”。

當(dāng)你使用全屏模式最大化屏幕的應(yīng)用空間時(shí)爽撒,一定要注意用戶可能的跳出檢查系統(tǒng)通知入蛆,或者進(jìn)行快速搜索的頻率。當(dāng)開啟全屏模式時(shí)硕勿,會(huì)導(dǎo)致用戶無(wú)法迅速使用系統(tǒng)導(dǎo)航哨毁,所以當(dāng)用戶體驗(yàn)的好處大于額外操作的可能時(shí),我們才使用全屏模式源武。

實(shí)現(xiàn)全屏3種操作:

1.Lean back傾斜模式

Lean back多用于觀看視頻時(shí)扼褪,當(dāng)用戶想要恢復(fù)系統(tǒng)欄時(shí),只需要點(diǎn)擊屏幕粱栖。

調(diào)用setSystemUiVisibility()傳遞SYSTEM_UI_FLAG_FULLSCREEN?andSYSTEM_UI_FLAG_HIDE_NAVIGATION.话浇,當(dāng)系統(tǒng)欄顯示時(shí)會(huì)接收到一個(gè)回調(diào),用于更新UI闹究,參考Responding to UI Visibility Changes

2.Immersive沉浸式模式

用于用戶需要大量屏幕操作幔崖,如“游戲”,“圖片觀看”渣淤,“書籍閱讀”赏寇,“幻燈片演示”。當(dāng)用戶需要系統(tǒng)欄時(shí)价认,只需要從隱藏系統(tǒng)欄的邊緣滑動(dòng)就可以嗅定,而不需要擔(dān)心其他屏幕操作用踩,影響用戶體驗(yàn)露戒。

調(diào)用setSystemUiVisibility()傳遞SYSTEM_UI_FLAG_IMMERSIVE?配置選項(xiàng)?SYSTEM_UI_FLAG_FULLSCREEN?andSYSTEM_UI_FLAG_HIDE_NAVIGATION

這種模式同樣用于,有自己的控件也需要與系統(tǒng)欄同步顯示或隱藏捶箱。例如觸摸屏幕上的任何位置切換工具欄或調(diào)色板的外觀丁屎,那么它還應(yīng)切換系統(tǒng)欄的外觀晨川。

3.Sticky immersive粘性沉浸式模式

常規(guī)沉浸式愧怜,當(dāng)滑動(dòng)屏幕邊緣時(shí)拥坛,系統(tǒng)都會(huì)負(fù)責(zé)顯示系統(tǒng)欄丸氛,而應(yīng)用程序卻無(wú)法獲得手勢(shì)操作事件,對(duì)于頻繁需要滑動(dòng)的游戲應(yīng)用來說摹察,這部分的體驗(yàn)就會(huì)非常糟糕螃成,所以應(yīng)該使用Sticky immersive偿曙。

在粘性沉浸式模式下,如果用戶使用系統(tǒng)欄從邊緣滑動(dòng),系統(tǒng)欄會(huì)出現(xiàn)稿壁,但它們是半透明的龟再,并且觸摸手勢(shì)會(huì)傳遞到您的應(yīng)用程序蛉威,因此應(yīng)用程序也可以響應(yīng)手勢(shì)。

在使用此方法的繪圖應(yīng)用程序中课竣,如果用戶想要繪制從屏幕最邊緣開始的線條公条,則從邊緣滑動(dòng)會(huì)顯示系統(tǒng)條欄并開始繪制從邊緣開始的線條。幾秒鐘沒有交互后迂曲,或者一旦用戶觸摸或手勢(shì)在系統(tǒng)欄外的任何位置赃份,系統(tǒng)欄會(huì)自動(dòng)消失

調(diào)用setSystemUiVisibility()傳遞SYSTEM_UI_FLAG_IMMERSIVE_STICKY配置選項(xiàng)?SYSTEM_UI_FLAG_FULLSCREEN?andSYSTEM_UI_FLAG_HIDE_NAVIGATION


UI標(biāo)簽除了,還有SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION?和SYSTEM_UI_FLAG_LAYOUT_STABLE奢米。為防止當(dāng)系統(tǒng)欄隱藏或顯示時(shí)影響應(yīng)用布局調(diào)整大小抓韩。 您還應(yīng)確保同時(shí)隱藏操作欄和其他UI控件。


@Override

public void onWindowFocusChanged(boolean hasFocus) { ? ?

????super.onWindowFocusChanged(hasFocus); ? ?

????if (hasFocus) { ? ? ? ?

????????hideSystemUI(); ? ?

????}

}


private void hideSystemUI() { ? ?

????//使用常規(guī)immersive模式鬓长,SYSTEM_UI_FLAG_IMMERSIVE? ? ?

????//使用 "lean back" 模式谒拴,移除 SYSTEM_UI_FLAG_IMMERSIVE. ? ?

????//"sticky immersive"模式, SYSTEM_UI_FLAG_IMMERSIVE_STICKY ? ?

????View decorView = getWindow().getDecorView(); ? ?

????decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE? ? ? ? ? ?

????// 設(shè)置內(nèi)容顯示在系統(tǒng)欄之下涉波,系統(tǒng)欄顯示或者隱藏英上,內(nèi)容大小不發(fā)生變化

????| ????View.SYSTEM_UI_FLAG_LAYOUT_STABLE ? ? ? ? ? ?

????| ????View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION ? ? ? ? ? ?

????| ????View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN ? ? ? ? ? ?

????// 隱藏導(dǎo)航欄和狀態(tài)欄? ? ? ? ? ?

????| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION ? ? ? ? ? ?

????| View.SYSTEM_UI_FLAG_FULLSCREEN);

}

// 顯示所有系統(tǒng)欄只需要移除除了用于設(shè)置內(nèi)容顯示在系統(tǒng)欄之下的標(biāo)簽即可炭序。

private void showSystemUI() { ? ?

????View decorView = getWindow().getDecorView(); ? ?

????decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE? ? ? ? ? ??

? ? | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION ? ? ? ? ? ?

????| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);

}


更好的用戶體驗(yàn):

1.要在狀態(tài)之間提供無(wú)縫轉(zhuǎn)換,請(qǐng)保持所有UI控件的可見性與系統(tǒng)欄同步苍日。 應(yīng)用程序進(jìn)入沉浸式模式后惭聂,任何UI控件也應(yīng)與系統(tǒng)欄一起隱藏,然后在系統(tǒng)UI重新出現(xiàn)時(shí)再次出現(xiàn)相恃。繼承View.OnSystemUiVisibilityChangeListener接收回調(diào)辜纲,參考Responding to UI Visibility Changes

2.繼承onWindowFocusChanged(),如果您獲得了窗口焦點(diǎn)拦耐,您可能需要重新隱藏系統(tǒng)欄耕腾。 如果您失去了窗口焦點(diǎn),例如由于顯示在您的應(yīng)用上方的對(duì)話框或彈出菜單杀糯,您可能希望取消之前使用Handler.postDelayed或類似內(nèi)容安排的任何待處理“隱藏”操作扫俺。

3.繼承GestureDetector,來監(jiān)聽onSingleTapUp(MotionEvent)以便控制觸摸內(nèi)容區(qū)域來顯示或隱藏系統(tǒng)欄固翰。


參考代碼:

Android ImmersiveMode Sample

Android BasicImmersiveMode Sample

Android AdvancedImmersiveMode Sample

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末狼纬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子骂际,更是在濱河造成了極大的恐慌疗琉,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件方援,死亡現(xiàn)場(chǎng)離奇詭異没炒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)犯戏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門送火,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人先匪,你說我怎么就攤上這事种吸。” “怎么了呀非?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵坚俗,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我岸裙,道長(zhǎng)猖败,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任降允,我火速辦了婚禮恩闻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘剧董。我一直安慰自己幢尚,他們只是感情好破停,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尉剩,像睡著了一般真慢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上理茎,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音功蜓,去河邊找鬼园爷。 笑死宠蚂,一個(gè)胖子當(dāng)著我的面吹牛式撼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播求厕,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼著隆,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了呀癣?” 一聲冷哼從身側(cè)響起美浦,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎项栏,沒想到半個(gè)月后浦辨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沼沈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年流酬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片列另。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡芽腾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出页衙,到底是詐尸還是另有隱情摊滔,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布店乐,位于F島的核電站艰躺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏眨八。R本人自食惡果不足惜腺兴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望踪古。 院中可真熱鬧含长,春花似錦券腔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至陪腌,卻和暖如春辱魁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背诗鸭。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工染簇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人强岸。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓锻弓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蝌箍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子青灼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 實(shí)現(xiàn)輔助(外掛)參考地址:http://developer.android.com/training/access...
    AFinalStone閱讀 1,425評(píng)論 0 0
  • 概述 通常來說娄蔼,System bars(包含status bar和navigation bar劲赠,如下圖所示替久, 1代...
    小蕓論閱讀 3,954評(píng)論 0 9
  • 能夠造成SystemUI Flag被系統(tǒng)自動(dòng)清除的交互分類 觸摸屏幕任何位置 頂部下拉狀態(tài)欄 底部上拉導(dǎo)航欄 Wi...
    備忘君閱讀 14,916評(píng)論 4 30
  • 一咙好、高效能運(yùn)作 企業(yè)發(fā)展戰(zhàn)略的核心就是確定企業(yè)正確的發(fā)展方向距潘,富有挑戰(zhàn)性且合理的目標(biāo)垢啼。方向明確畴嘶,企業(yè)的經(jīng)濟(jì)效益才能...
    位于高度發(fā)達(dá)閱讀 206評(píng)論 0 0
  • 文/藍(lán)騎士 01 現(xiàn)代人太忙策橘,進(jìn)入了一個(gè)信息爆炸的時(shí)代,不怕沒有信息亏狰,因?yàn)榫退悴幌肼犚畚疲部偸菚?huì)往耳朵里鉆。 我們總...
    藍(lán)騎士Lan閱讀 637評(píng)論 2 5