上篇文章提到了在項目中設置沉浸式狀態(tài)欄(大家都這么叫)鸿脓,在實際項目中碰到了N多坑抑钟,(其實是自己菜,哭野哭。在塔。。)虐拓。解決無法心俗,隨加入作者群與眾大神討論交流(我才不會說我是去請教大神),最后厚顏無恥的加了群主的微信/qq蓉驹,在大佬的幫助下城榛,終于搞定!(此處應有掌聲态兴。狠持。。瞻润。)喘垂,這里決定記錄一下使用的一些注意點,以待備用绍撞。
群號在:ImmersionBar 的Github最下面正勒,歡迎大家來交流。
說明:這篇文章僅僅是對于我的項目來說的傻铣,每個人的項目不一樣章贞,我這里只是記錄一下我的設置,具體使用方法大家還是要去github上面看Demo非洲,看源碼是怎么寫的鸭限,作者寫的很詳細。
導入項目
這個就不說了两踏,平時怎么加依賴败京,這里就怎么整。
初始化及使用
Activity / Fragment中初始化梦染,初始化最好放在BaseActivity赡麦、BaseFragmetn中(兩個初始化都需要)。
initImmersionBar()方法在Activity的onCreate()方法中,在Fragment的onCreateView()中隧甚。
//初始化狀態(tài)欄
initImmersionBar();
/**
* 初始化狀態(tài)欄設置
*/
public void initImmersionBar() {
mImmersionBar = ImmersionBar.with(this);
mImmersionBar.init(); //所有子類都將繼承這些相同的屬性
}
在設置上面的方法之后车荔,你的APP應該已經(jīng)將狀態(tài)欄透明了,且布局與狀態(tài)欄重疊(5中解決方案看Demo)戚扳。
如果APP的Activity / Fragmetn的狀態(tài)欄都是一個風格,直接設置成下面這樣就可以了族吻,這樣繼承的頁面 就不需要做什么操作了帽借。
mImmersionBar = ImmersionBar.with(this);//初始化
mImmersionBar
.statusBarDarkFont(true, 0.2f)//設置狀態(tài)欄圖片為深色,(如果android 6.0以下就是半透明)
.fitsSystemWindows(true)//設置這個是為了防止布局和頂部的狀態(tài)欄重疊
.statusBarColor(R.color.white)//這里的顏色超歌,你可以自定義砍艾。
.init();
如果有界面不一樣,還是在各自的界面或者Fragment中設置,代碼如下:
//reset就是把之前設置的屬性都刪除(mImmersionBar是因為繼承的BaseActivity或者BaseFragmetn所以有的)
//在這里設置本頁面需要設置的顏色什么的巍举。我這邊因為布局頂部是圖片脆荷,所以和狀態(tài)欄重合沒關系,你們?nèi)绻皇沁@樣就需要設置fitsSystemWindows(true)
mImmersionBar.reset().statusBarDarkFont(true).init();
注意點:
- 不論在Activity 或者 Fragment 中懊悯,在 onDestroy()中都要將 mImmersionBar 銷毀掉蜓谋。
if (mImmersionBar != null) {
//必須調(diào)用該方法,防止內(nèi)存泄漏炭分,不調(diào)用該方法桃焕,如果界面bar發(fā)生改變,在不關閉app的情況下捧毛,退出此界面再進入將記憶最后一次bar改變的狀態(tài)
mImmersionBar.destroy();
}
- 如果是使用 hide 和 show 來切換不同F(xiàn)ragment的观堂,需要在BaseFragment中補充下面這個方法
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (!hidden && mImmersionBar != null)
mImmersionBar.init();
}