關(guān)于Android5.0透明狀態(tài)欄高度適配(沉浸式狀態(tài)欄)

Github 例子 ps:提供狀態(tài)欄導(dǎo)航欄操作

例子

SystemUiHelper.get(activity)
    .setStatusBarColor(0)
    .setNavigationBarColor(0x33ffffff)
    .setLightStatusBar()
    .setLightNavigationBar()
    .fullScreen()
    .systemUiHeight(new SystemUiAttrCallback() {
        @override
        public void windowPaddingSize(int left, int top, int right, int bottom) {
        }
    });

前言

距離Android5.0誕生已經(jīng)很長(zhǎng)一段時(shí)間了,透明狀態(tài)欄也不再新鮮烤送,但是還是有很多人不知道如何獲取狀態(tài)欄的高度進(jìn)行適配屏幕寒随,所以寫(xiě)一篇文章普及下。(國(guó)內(nèi)稱(chēng)之為沉浸式狀態(tài)欄,這個(gè)說(shuō)法是錯(cuò)的)

正文

相信大多人都知道妻往,狀態(tài)欄的高度是通過(guò)Padding進(jìn)行設(shè)置的互艾,這篇文章主要就是介紹如何獲取這個(gè)Padding的高度。
所有View的展示都離不開(kāi)WindowInsets類(lèi)讯泣,沒(méi)錯(cuò)纫普,就是這個(gè)類(lèi)記錄了狀態(tài)欄的高度,只要獲取到DecorViewWindowInsets好渠,我們就能獲取到狀態(tài)欄的高度

/**
 * Describes a set of insets for window content.
 *
 * <p>WindowInsets are immutable and may be expanded to include more inset types in the future.
 * To adjust insets, use one of the supplied clone methods to obtain a new WindowInsets instance
 * with the adjusted properties.</p>
 *
 * @see View.OnApplyWindowInsetsListener
 * @see View#onApplyWindowInsets(WindowInsets)
 */
public final class WindowInsets {
  ***
}

我們可以通過(guò)獲取DecorView通過(guò)設(shè)置監(jiān)聽(tīng)來(lái)獲取WindowInsets

{
        getWindow().getDecorView().setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
            @Override
            public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
                insets.getSystemWindowInsetTop();//這就是狀態(tài)欄高度
                //獲取高度后的處理
                return v.onApplyWindowInsets(insets);//此函數(shù)必須調(diào)用局嘁,否則WindowInsets無(wú)效
            }
        });
}

監(jiān)聽(tīng)返回需調(diào)用onApplyWindowInsets函數(shù),通過(guò)源碼可以看到晦墙,不設(shè)置監(jiān)聽(tīng)時(shí)是調(diào)用了onApplyWindowInsets函數(shù)的悦昵,設(shè)置監(jiān)聽(tīng)后就沒(méi)有調(diào)用了,不調(diào)用該函數(shù)會(huì)使得WindowInsets無(wú)法正確配置

public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) {
        try {
            mPrivateFlags3 |= PFLAG3_APPLYING_INSETS;
            if (mListenerInfo != null && mListenerInfo.mOnApplyWindowInsetsListener != null) {
                return mListenerInfo.mOnApplyWindowInsetsListener.onApplyWindowInsets(this, insets);
            } else {
                return onApplyWindowInsets(insets);
            }
        } finally {
            mPrivateFlags3 &= ~PFLAG3_APPLYING_INSETS;
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晌畅,一起剝皮案震驚了整個(gè)濱河市但指,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抗楔,老刑警劉巖棋凳,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異连躏,居然都是意外死亡剩岳,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)入热,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拍棕,“玉大人,你說(shuō)我怎么就攤上這事勺良〈虏ィ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵尚困,是天一觀的道長(zhǎng)蠢箩。 經(jīng)常有香客問(wèn)我,道長(zhǎng)事甜,這世上最難降的妖魔是什么谬泌? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮逻谦,結(jié)果婚禮上掌实,老公的妹妹穿的比我還像新娘。我一直安慰自己跨跨,他們只是感情好潮峦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布囱皿。 她就那樣靜靜地躺著,像睡著了一般忱嘹。 火紅的嫁衣襯著肌膚如雪嘱腥。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天拘悦,我揣著相機(jī)與錄音齿兔,去河邊找鬼。 笑死础米,一個(gè)胖子當(dāng)著我的面吹牛分苇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播屁桑,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼医寿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蘑斧?” 一聲冷哼從身側(cè)響起靖秩,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎竖瘾,沒(méi)想到半個(gè)月后沟突,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捕传,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年惠拭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庸论。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡职辅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出葡公,到底是詐尸還是另有隱情罐农,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布催什,位于F島的核電站,受9級(jí)特大地震影響宰睡,放射性物質(zhì)發(fā)生泄漏蒲凶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一拆内、第九天 我趴在偏房一處隱蔽的房頂上張望旋圆。 院中可真熱鬧,春花似錦麸恍、人聲如沸灵巧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)刻肄。三九已至瓤球,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間敏弃,已是汗流浹背卦羡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留麦到,地道東北人绿饵。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像瓶颠,于是被迫代替她去往敵國(guó)和親拟赊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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