Android-推薦一個(gè)沉浸式狀態(tài)欄開源庫(kù)(ImmersionBar )

圖片來源網(wǎng)絡(luò),入侵必刪

在日常的Android開發(fā)中键思,我們肯定遇到沉浸式的開發(fā)需求础爬。在大多數(shù)項(xiàng)目當(dāng)中,都會(huì)使用ImmersionBar開源庫(kù)適配吼鳞。這篇博客分享一下ImmersionBar相關(guān)的知識(shí)看蚜,希望對(duì)看文章的小伙伴有所幫助。

ImmersionBar依賴

mavenCentral版本:

// 基礎(chǔ)依賴包赔桌,必須要依賴
implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
// kotlin擴(kuò)展(可選)
implementation 'com.geyifeng.immersionbar:immersionbar-ktx:3.2.2'
// fragment快速實(shí)現(xiàn)(可選)已廢棄
implementation 'com.geyifeng.immersionbar:immersionbar-components:3.2.2'

jcenter版本:

// 基礎(chǔ)依賴包供炎,必須要依賴
implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
// kotlin擴(kuò)展(可選)
implementation 'com.gyf.immersionbar:immersionbar-ktx:3.0.0'
// fragment快速實(shí)現(xiàn)(可選)
implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0'

我寫博客的時(shí)候,開源庫(kù)的版本是3.2.2疾党。后續(xù)可以查看ImmersionBar開源文檔

適配全面屏與劉海屏

   <!--適配華為(huawei)劉海屏-->
   <meta-data 
     android:name="android.notch_support" 
     android:value="true"/>
   <!--適配小米(xiaomi)劉海屏-->
   <meta-data
     android:name="notch.config"
     android:value="portrait|landscape" />

這個(gè)適配代碼是加在AndroidManifest.xml中音诫。

Api詳解

基礎(chǔ)用法:

ImmersionBar.with(this).init();

所有的參數(shù)解釋:

 ImmersionBar.with(this)
             .transparentStatusBar()  //透明狀態(tài)欄,不寫默認(rèn)透明色
             .transparentNavigationBar()  //透明導(dǎo)航欄雪位,不寫默認(rèn)黑色(設(shè)置此方法竭钝,fullScreen()方法自動(dòng)為true)
             .transparentBar()             //透明狀態(tài)欄和導(dǎo)航欄,不寫默認(rèn)狀態(tài)欄為透明色茧泪,導(dǎo)航欄為黑色(設(shè)置此方法蜓氨,fullScreen()方法自動(dòng)為true)
             .statusBarColor(R.color.colorPrimary)     //狀態(tài)欄顏色,不寫默認(rèn)透明色
             .navigationBarColor(R.color.colorPrimary) //導(dǎo)航欄顏色队伟,不寫默認(rèn)黑色
             .barColor(R.color.colorPrimary)  //同時(shí)自定義狀態(tài)欄和導(dǎo)航欄顏色穴吹,不寫默認(rèn)狀態(tài)欄為透明色,導(dǎo)航欄為黑色
             .statusBarAlpha(0.3f)  //狀態(tài)欄透明度嗜侮,不寫默認(rèn)0.0f
             .navigationBarAlpha(0.4f)  //導(dǎo)航欄透明度港令,不寫默認(rèn)0.0F
             .barAlpha(0.3f)  //狀態(tài)欄和導(dǎo)航欄透明度,不寫默認(rèn)0.0f
             .statusBarDarkFont(true)   //狀態(tài)欄字體是深色锈颗,不寫默認(rèn)為亮色
             .navigationBarDarkIcon(true) //導(dǎo)航欄圖標(biāo)是深色顷霹,不寫默認(rèn)為亮色
             .autoDarkModeEnable(true) //自動(dòng)狀態(tài)欄字體和導(dǎo)航欄圖標(biāo)變色,必須指定狀態(tài)欄顏色和導(dǎo)航欄顏色才可以自動(dòng)變色哦
             .autoStatusBarDarkModeEnable(true,0.2f) //自動(dòng)狀態(tài)欄字體變色击吱,必須指定狀態(tài)欄顏色才可以自動(dòng)變色哦
             .autoNavigationBarDarkModeEnable(true,0.2f) //自動(dòng)導(dǎo)航欄圖標(biāo)變色淋淀,必須指定導(dǎo)航欄顏色才可以自動(dòng)變色哦
             .flymeOSStatusBarFontColor(R.color.btn3)  //修改flyme OS狀態(tài)欄字體顏色
             .fullScreen(true)      //有導(dǎo)航欄的情況下,activity全屏顯示覆醇,也就是activity最下面被導(dǎo)航欄覆蓋朵纷,不寫默認(rèn)非全屏
             .hideBar(BarHide.FLAG_HIDE_BAR)  //隱藏狀態(tài)欄或?qū)Ш綑诨騼烧撸粚懩J(rèn)不隱藏
             .addViewSupportTransformColor(toolbar)  //設(shè)置支持view變色永脓,可以添加多個(gè)view袍辞,不指定顏色,默認(rèn)和狀態(tài)欄同色常摧,還有兩個(gè)重載方法
             .titleBar(view)    //解決狀態(tài)欄和布局重疊問題搅吁,任選其一
             .titleBarMarginTop(view)     //解決狀態(tài)欄和布局重疊問題威创,任選其一
             .statusBarView(view)  //解決狀態(tài)欄和布局重疊問題锯厢,任選其一
             .fitsSystemWindows(true)    //解決狀態(tài)欄和布局重疊問題佣盒,任選其一陈症,默認(rèn)為false瓶籽,當(dāng)為true時(shí)一定要指定statusBarColor(),不然狀態(tài)欄為透明色萤捆,還有一些重載方法
             .supportActionBar(true) //支持ActionBar使用
             .statusBarColorTransform(R.color.orange)  //狀態(tài)欄變色后的顏色
             .navigationBarColorTransform(R.color.orange) //導(dǎo)航欄變色后的顏色
             .barColorTransform(R.color.orange)  //狀態(tài)欄和導(dǎo)航欄變色后的顏色
             .removeSupportView(toolbar)  //移除指定view支持
             .removeSupportAllView() //移除全部view支持
             .navigationBarEnable(true)   //是否可以修改導(dǎo)航欄顏色兼贸,默認(rèn)為true
             .navigationBarWithKitkatEnable(true)  //是否可以修改安卓4.4和emui3.x手機(jī)導(dǎo)航欄顏色晰绎,默認(rèn)為true
             .navigationBarWithEMUI3Enable(true) //是否可以修改emui3.x手機(jī)導(dǎo)航欄顏色寞奸,默認(rèn)為true
             .keyboardEnable(true)  //解決軟鍵盤與底部輸入框沖突問題,默認(rèn)為false在跳,還有一個(gè)重載方法枪萄,可以指定軟鍵盤mode
             .keyboardMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)  //單獨(dú)指定軟鍵盤模式
             .setOnKeyboardListener(new OnKeyboardListener() {    //軟鍵盤監(jiān)聽回調(diào),keyboardEnable為true才會(huì)回調(diào)此方法
                   @Override
                   public void onKeyboardChange(boolean isPopup, int keyboardHeight) {
                       LogUtils.e(isPopup);  //isPopup為true猫妙,軟鍵盤彈出瓷翻,為false,軟鍵盤關(guān)閉
                   }
              })
             .setOnNavigationBarListener(onNavigationBarListener) //導(dǎo)航欄顯示隱藏監(jiān)聽割坠,目前只支持華為和小米手機(jī)
             .setOnBarListener(OnBarListener) //第一次調(diào)用和橫豎屏切換都會(huì)觸發(fā)齐帚,可以用來做劉海屏遮擋布局控件的問題
             .addTag("tag")  //給以上設(shè)置的參數(shù)打標(biāo)記
             .getTag("tag")  //根據(jù)tag獲得沉浸式參數(shù)
             .reset()  //重置所以沉浸式參數(shù)
             .init();  //必須調(diào)用方可應(yīng)用以上所配置的參數(shù)

混淆規(guī)則

 -keep class com.gyf.immersionbar.* {*;} 
 -dontwarn com.gyf.immersionbar.**

這個(gè)混淆規(guī)則是加在3.0.0以下的版本,3.0.0以上不用彼哼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末对妄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子敢朱,更是在濱河造成了極大的恐慌剪菱,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拴签,死亡現(xiàn)場(chǎng)離奇詭異孝常,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蚓哩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門构灸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人岸梨,你說我怎么就攤上這事喜颁。” “怎么了盛嘿?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵洛巢,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我次兆,道長(zhǎng)稿茉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮漓库,結(jié)果婚禮上恃慧,老公的妹妹穿的比我還像新娘。我一直安慰自己渺蒿,他們只是感情好痢士,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茂装,像睡著了一般怠蹂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上少态,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天城侧,我揣著相機(jī)與錄音,去河邊找鬼彼妻。 笑死嫌佑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的侨歉。 我是一名探鬼主播屋摇,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼幽邓!你這毒婦竟也來了炮温?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤牵舵,失蹤者是張志新(化名)和其女友劉穎茅特,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棋枕,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡白修,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了重斑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兵睛。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖窥浪,靈堂內(nèi)的尸體忽然破棺而出祖很,到底是詐尸還是另有隱情,我是刑警寧澤漾脂,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布假颇,位于F島的核電站,受9級(jí)特大地震影響骨稿,放射性物質(zhì)發(fā)生泄漏笨鸡。R本人自食惡果不足惜姜钳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望形耗。 院中可真熱鬧哥桥,春花似錦、人聲如沸激涤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽倦踢。三九已至送滞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辱挥,已是汗流浹背累澡。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留般贼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓奥吩,卻偏偏與公主長(zhǎng)得像哼蛆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子霞赫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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