借助WindowInsetsControllerCompat,輕松獲取狀態(tài)欄文字顏色

最近在提測(cè)版本時(shí)酒奶,測(cè)試發(fā)現(xiàn)一個(gè)奇怪的現(xiàn)象蚁孔,在一個(gè)狀態(tài)欄透明背景,文字是亮色的頁面下惋嚎,跳轉(zhuǎn)登錄杠氢,當(dāng)前界面的狀態(tài)欄會(huì)突然變成白底黑字,然后在跳轉(zhuǎn)過去另伍。

一排查下來鼻百,發(fā)現(xiàn)狀態(tài)欄會(huì)變成白底黑字,是因?yàn)榈卿洉r(shí)會(huì)喚起一個(gè)透明的中間頁面摆尝,執(zhí)行一鍵登錄的邏輯温艇,而這個(gè)透明頁面,自然是默認(rèn)的黑底白字堕汞。知道了原因勺爱,那就開始動(dòng)手解決吧。

因?yàn)闃I(yè)務(wù)需要讯检,跳轉(zhuǎn)之前的頁面的狀態(tài)欄不能修改琐鲁,那就只能修改透明的中間頁面卫旱,讓其可以適配上一個(gè)頁面的狀態(tài)欄配置,這里因?yàn)槲抑耙呀?jīng)做了activity任務(wù)棧的維護(hù)围段,詳見下面的代碼:

        application.registerActivityLifecycleCallbacks(object : AbsActivityLifecycleCallback() {
            override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
                super.onActivityCreated(activity, savedInstanceState)

                addActivity(activity)
            }

            override fun onActivityDestroyed(activity: Activity) {
                super.onActivityDestroyed(activity)

                removeActivity(activity)
            }
        })

這樣我就能拿到上一個(gè)頁面的Activity實(shí)例顾翼,現(xiàn)在問題變成了如何獲取其狀態(tài)欄背景。一開始我打算根據(jù)設(shè)置狀態(tài)欄背景的方法getDecorView().setSystemUiVisibility(visibility)奈泪,反過來找一下getSystemUiVisibility的方法适贸,可惜的是并沒有這樣的方法。之后想起來之前用過WindowInset解決app嵌入h5頁面涝桅,喚起軟鍵盤時(shí)界面沒有正確顯示的問題取逾,當(dāng)時(shí)只用了WindowInsetCompat,
而官方在api 30引入了WindowInsetsController,用于替代setSystemUIVisibilty苹支,另外在core-ktx的1.5.0版本砾隅,新添加了WindowInsetsControllerCompat,用于向下兼容。

查看了一下api债蜜,WindowInsetsControllerCompat有一個(gè)isAppearanceLightStatusBars()方法,
返回status bar的foreground是不是light,注意這里返回true說明是亮色底晴埂,也就是白底黑字,文字顏色是黑色寻定,要獲取文字顏色的需要對(duì)返回值取反儒洛。這樣我們就可以通過這個(gè)方法來適配頁面的狀態(tài)欄背景。

到此問題就解決了狼速,不過在排查過程中琅锻,我發(fā)現(xiàn)公司的狀態(tài)欄管理的工具類的邏輯非常亂,畢竟?fàn)顟B(tài)欄這塊經(jīng)歷了4.4時(shí)期第三方rom支持修改向胡,5.0官方支持恼蓬,后續(xù)新增了新的功能,現(xiàn)在通過WindowInsetsController僵芹,控制狀態(tài)欄处硬,底部欄,軟鍵盤這些控件變得更加簡(jiǎn)單了拇派,大家趕緊學(xué)起來

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末荷辕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子件豌,更是在濱河造成了極大的恐慌疮方,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茧彤,死亡現(xiàn)場(chǎng)離奇詭異骡显,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門蟆盐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遭殉,你說我怎么就攤上這事石挂。” “怎么了险污?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵痹愚,是天一觀的道長。 經(jīng)常有香客問我蛔糯,道長拯腮,這世上最難降的妖魔是什么立哑? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任骑晶,我火速辦了婚禮线衫,結(jié)果婚禮上麸塞,老公的妹妹穿的比我還像新娘鸥昏。我一直安慰自己者娱,他們只是感情好涌韩,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布肮帐。 她就那樣靜靜地躺著爬早,像睡著了一般哼丈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上筛严,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天醉旦,我揣著相機(jī)與錄音,去河邊找鬼桨啃。 笑死车胡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的照瘾。 我是一名探鬼主播吨拍,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼网杆!你這毒婦竟也來了羹饰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤碳却,失蹤者是張志新(化名)和其女友劉穎队秩,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昼浦,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡馍资,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了关噪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸟蟹。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乌妙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出建钥,到底是詐尸還是另有隱情藤韵,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布熊经,位于F島的核電站泽艘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏镐依。R本人自食惡果不足惜匹涮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望槐壳。 院中可真熱鬧然低,春花似錦、人聲如沸务唐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绍哎。三九已至来农,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間崇堰,已是汗流浹背沃于。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留海诲,地道東北人繁莹。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像特幔,于是被迫代替她去往敵國和親咨演。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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