使用setSystemUiVisibility適配statusbar和navigationbar

前言

  • 關(guān)于沉浸式標(biāo)準(zhǔn)的定義:App默認(rèn)是全屏的刃鳄,用戶可以從頂部或者底部“滑出”狀態(tài)欄和導(dǎo)航欄徐勃,一段時(shí)間后狀態(tài)欄和導(dǎo)航欄會(huì)自動(dòng)消失。

setSystemUiVisibility
4.0之后考赛,官方提供了這個(gè)方法月趟,可以改變系統(tǒng)的UI可見性,使用方式如下:

int flag = View.SYSTEM_UI_FLAG_FULLSCREEN;
getWindow().getDecorView().setSystemUiVisibility(flag);

多個(gè)值可以使用"|"操作符撇簿,比如:

int flag = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
getWindow().getDecorView().setSystemUiVisibility(flag);

常見flag展示效果如下:

  • SYSTEM_UI_FLAG_FULLSCREEN(4.1+):隱藏狀態(tài)欄聂渊,手指在屏幕頂部往下拖動(dòng),狀態(tài)欄會(huì)再次出現(xiàn)且不會(huì)消失四瘫,另外activity界面會(huì)重新調(diào)整大小汉嗽,直觀感覺就是activity高度有個(gè)變小的過程。
SYSTEM_UI_FLAG_FULLSCREEN
  • SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN(4.1+):配合SYSTEM_UI_FLAG_FULLSCREEN一起使用找蜜,效果使得狀態(tài)欄出現(xiàn)的時(shí)候不會(huì)擠壓activity高度饼暑,狀態(tài)欄會(huì)覆蓋在activity之上
SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
  • SYSTEM_UI_FLAG_HIDE_NAVIGATION(4.0+):會(huì)使得虛擬導(dǎo)航欄隱藏,但同樣用戶可以從屏幕下邊緣“拖出”且不會(huì)再次消失洗做,同時(shí)activity界面會(huì)被擠壓 弓叛。
SYSTEM_UI_FLAG_HIDE_NAVIGATION
  • SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION(4.1+):配合 SYSTEM_UI_FLAG_HIDE_NAVIGATION 一起使用,效果使得導(dǎo)航欄出現(xiàn)的時(shí)候不會(huì)擠壓activity高度诚纸,導(dǎo)航欄會(huì)覆蓋在activity之上撰筷。
SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
  • 使用以上四個(gè)屬性,可以達(dá)到activity占據(jù)屏幕所有空間畦徘,同時(shí)狀態(tài)欄和導(dǎo)航欄可以懸浮在activity之上的效果毕籽。但是此時(shí)activity的內(nèi)容也會(huì)(比如頂部和底部各有一個(gè)TextView)狀態(tài)欄和導(dǎo)航欄之下,當(dāng)狀態(tài)欄和導(dǎo)航欄出現(xiàn)的時(shí)候井辆,看起來會(huì)這樣:
四個(gè)屬性

顯然关筒,文字被遮蓋了我們是不能接受的,此時(shí)我們需要另外一個(gè)屬性掘剪,android:fitsSystemWindows=“true”平委,這個(gè)屬性表示系統(tǒng)UI(狀態(tài)欄奈虾、導(dǎo)航欄)可見的時(shí)候夺谁,會(huì)給我們的布局加上padding(paddingTop、paddingBottom)屬性肉微,這樣內(nèi)容就不會(huì)被蓋住了匾鸥。我們?cè)赼ctivity的根布局加上這個(gè)屬性,效果如下:

fitsSystemWindows

以上都是4.1(除了SYSTEM_UI_FLAG_HIDE_NAVIGATION)的屬性碉纳,觀察之后我們發(fā)現(xiàn)勿负,不管是那種屬性,狀態(tài)欄和導(dǎo)航欄總是會(huì)“遮擋”activity,為了解決這個(gè)問題奴愉,4.4引入了“全屏沉浸模式”這個(gè)概念琅摩。

  • SYSTEM_UI_FLAG_IMMERSIVE(4.4+):這個(gè)屬性是用來實(shí)現(xiàn)“沉浸式”效果的,官方稱作“Immersive full-screen mode”锭硼。

To provide your app with a layout that fills the entire screen, the new SYSTEM_UI_FLAG_IMMERSIVEflag for setSystemUiVisibility()(when combined with SYSTEM_UI_FLAG_HIDE_NAVIGATION) enables a new immersive full-screen mode.

SYSTEM_UI_FLAG_HIDE_NAVIGATION+SYSTEM_UI_FLAG_IMMERSIVE
  • SYSTEM_UI_FLAG_IMMERSIVE_STICKY :和SYSTEM_UI_FLAG_IMMERSIVE相似房资,它被稱作“粘性”的沉浸模式,這個(gè)模式會(huì)在狀態(tài)欄和導(dǎo)航欄顯示一段時(shí)間后檀头,自動(dòng)隱藏(你可以點(diǎn)擊一下屏幕轰异,立即隱藏)。同時(shí)需要重點(diǎn)說明的是暑始,這種模式下搭独,狀態(tài)欄和導(dǎo)航欄出現(xiàn)的時(shí)候是“半透明”狀態(tài),效果如下 :
粘性

關(guān)于Translucent Bar

  • 4.4以上實(shí)現(xiàn)方式廊镜,大概需要用到以下兩個(gè)屬性:
  • windowTranslucentNavigation:application的主題加上這個(gè)屬性牙肝,表示狀態(tài)欄半透明,另外嗤朴,會(huì)使得狀態(tài)欄會(huì)懸浮在activity之上(此時(shí)惊奇,activity布局會(huì)擴(kuò)展到狀態(tài)欄底部(Z軸方向)):
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowTranslucentStatus">true</item>
    </style>
    為了不遮擋activity內(nèi)容,需要配合另外一個(gè)屬性
  • android:fitsSystemWindows:使用這個(gè)屬性的View播赁,系統(tǒng)會(huì)在View頂部添加padding(大小為狀態(tài)欄高度):
  • 如果希望頂部是圖片颂郎,在z軸方向上和statusbar統(tǒng)一維度,則不用使用fitsSystemWindows 效果如圖:
頂部圖片
  • activity布局會(huì)擴(kuò)展到狀態(tài)欄
    <item name="android:windowTranslucentStatus">true</item>
  • 如果你希望擴(kuò)展的區(qū)域容为,不被狀態(tài)欄蓋住內(nèi)容乓序,那就加上
    android:fitsSystemWindows="true"
  • 狀態(tài)欄在4.4-5.0之間的效果是全透明,5.0+是半透明
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坎背,一起剝皮案震驚了整個(gè)濱河市替劈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌得滤,老刑警劉巖陨献,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異懂更,居然都是意外死亡眨业,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門沮协,熙熙樓的掌柜王于貴愁眉苦臉地迎上來龄捡,“玉大人,你說我怎么就攤上這事慷暂∑钢常” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)奸腺。 經(jīng)常有香客問我餐禁,道長(zhǎng),這世上最難降的妖魔是什么突照? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任坠宴,我火速辦了婚禮,結(jié)果婚禮上绷旗,老公的妹妹穿的比我還像新娘喜鼓。我一直安慰自己,他們只是感情好衔肢,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布庄岖。 她就那樣靜靜地躺著,像睡著了一般角骤。 火紅的嫁衣襯著肌膚如雪隅忿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天邦尊,我揣著相機(jī)與錄音金拒,去河邊找鬼思灌。 笑死夭咬,一個(gè)胖子當(dāng)著我的面吹牛着绊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播又沾,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼弊仪,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了杖刷?” 一聲冷哼從身側(cè)響起励饵,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎滑燃,沒想到半個(gè)月后役听,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡表窘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年典予,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚊丐。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡熙参,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出麦备,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布凛篙,位于F島的核電站黍匾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏呛梆。R本人自食惡果不足惜锐涯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望填物。 院中可真熱鬧纹腌,春花似錦、人聲如沸滞磺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)击困。三九已至涎劈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間阅茶,已是汗流浹背蛛枚。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脸哀,地道東北人蹦浦。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像撞蜂,于是被迫代替她去往敵國(guó)和親白筹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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