安卓浸入式狀態(tài)欄

1.概述

?????? 隨著安卓4.4版本允許開發(fā)者改變狀態(tài)欄之后太抓,各大App也都選擇了進(jìn)入自己的主題色或背景圖片作為狀態(tài)欄的顏色读整,較之前的系統(tǒng)默認(rèn)狀態(tài)欄相比無疑是提高了用戶體驗(yàn),也讓App在這個(gè)看臉的社會,更具有吸引力茅撞,當(dāng)然對于自己的作品痴昧,有好的東西能實(shí)現(xiàn)的肯定要盡可能的實(shí)現(xiàn)稽穆,畢竟產(chǎn)品的提升就在這點(diǎn)滴之間,下面進(jìn)入今天的主題吧

2.安卓4.4版本的實(shí)現(xiàn)

4.4版本推出后開發(fā)者可以使用浸入圖片的背景色赶撰,但是無法主動的改變顏色舌镶,使用也比較簡單:

if (Build.VERSION.SDK_INT>= Build.VERSION_CODES.KITKAT)
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

FLAG_TRANSLUCENT_STATUS : 意思很簡單就是表面意思,透明狀態(tài)欄

設(shè)置之后你的系統(tǒng)狀態(tài)欄就會隨著你的底色改變顏色了豪娜,效果就不展示了餐胀,不過你會發(fā)現(xiàn),你的標(biāo)題或者ToolBar和狀態(tài)欄重合了瘤载,感覺也浸入進(jìn)去了否灾,這是你需要為浸入的View設(shè)置一下屬性:

android:fitsSystemWindows="true"
android:clipToPadding="true"

android:fitsSystemWindows="true",就是使用系統(tǒng)的窗口布局鸣奔,系統(tǒng)還會自動在浸入狀態(tài)欄的前面加上一個(gè)Padding墨技,這樣你的view或標(biāo)題就不會被頂上去了,至于第二個(gè)屬性溃蔫,以實(shí)際效果來看健提,寫和不寫都不會影響最后的布局,不過別以為就這么簡單伟叛,麻煩由此開始私痹。。。紊遵。账千。

到此你如果在4.4 版本上使用時(shí)一切正常,能達(dá)到你預(yù)期的效果暗膜,但是在5.0以上運(yùn)行的話你會發(fā)現(xiàn)狀態(tài)欄不是完全透明的匀奏,而是有半透明的效果,(本人的魅族手機(jī)除外学搜,魅族的系統(tǒng)顯示的是沒有這個(gè)半透明的)這就是第一個(gè)麻煩娃善,后面會繼續(xù)分析

3.安卓5.0以上的狀態(tài)欄

前面已經(jīng)提到5.0以上的狀態(tài)欄是一種半透明效果,那就先來認(rèn)識一下5.0新增改變狀態(tài)欄的方法瑞佩,使用過ToolBar的同學(xué)應(yīng)該知道聚磺,在stytle文件中就可以設(shè)定狀態(tài)欄和導(dǎo)航欄的顏色,不過5.0以后可以在代碼中改變狀態(tài)欄和導(dǎo)航欄的顏色炬丸,現(xiàn)在我們的目的是要和4.4的統(tǒng)一起來瘫寝,這就需要把半透明顏色改為透明的顏色:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS );
window.setStatusBarColor(Color.TRANSPARENT);
window.setNavigationBarColor(Color.TRANSPARENT);

}


到此可以讓5.0的狀態(tài)欄變成透明狀態(tài)

4.遇到的問題

1.ViewPagr+Fragment:

筆者首頁使用的是ViewPager可是無論怎么設(shè)置Fragment中的View總是會與狀態(tài)欄重合,而別的界面的Activity和ToolBar都正常稠炬,查了一些資料也沒有特別好的方法焕阿,最后我才用了BUG的一招強(qiáng)行在View的前面添加一個(gè)占位空格,使界面布局回復(fù)到正常的狀態(tài)首启,這里整理一下方便以后查找的同學(xué)暮屡,這也是我為什么寫這篇文章的原因,直接看代碼:


首先在xml中寫一個(gè)占位View

<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="0dp"></View>

代碼中寫了一個(gè)空的View闽坡,之后根據(jù)手機(jī)狀態(tài)欄的高度設(shè)置其高度達(dá)到適配的效果


獲取狀態(tài)欄的高度

public static  int getStatusBarHeight(Context context) {
Class<?> c = null;
Object obj = null;
Field field = null;
int x = 0;
try {
c = Class.forName("com.android.internal.R$dimen");
obj = c.newInstance();
field = c.getField("status_bar_height");
x = Integer.parseInt(field.get(obj).toString());
return context.getResources().getDimensionPixelSize(x);
} catch (Exception e1) {

e1.printStackTrace();
return 75;
}
}

這個(gè)利用反射獲取狀態(tài)欄高度的方法大家應(yīng)該不陌生吧栽惶,肯定多數(shù)人都見過


設(shè)置占位View的高度

View view1 = view.findViewById(R.id.view);
ViewGroup.LayoutParams layoutParams = view1.getLayoutParams();
layoutParams.height = IContent.getStatusBarHeight(getActivity());
view1.setLayoutParams(layoutParams);
view1.setBackgroundColor(Color.TRANSPARENT);


到這里就可以實(shí)現(xiàn)在Fragment上顯示的效果了,今天就到這了疾嗅,當(dāng)然后面還有因?yàn)檫@個(gè)浸入式狀態(tài)欄而導(dǎo)致的問題后面再繼續(xù)談?wù)?/p>



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末外厂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子代承,更是在濱河造成了極大的恐慌汁蝶,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件论悴,死亡現(xiàn)場離奇詭異掖棉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)膀估,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門幔亥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人察纯,你說我怎么就攤上這事帕棉≌敕剩” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵香伴,是天一觀的道長慰枕。 經(jīng)常有香客問我,道長即纲,這世上最難降的妖魔是什么具帮? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮低斋,結(jié)果婚禮上蜂厅,老公的妹妹穿的比我還像新娘。我一直安慰自己膊畴,他們只是感情好葛峻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著巴比,像睡著了一般。 火紅的嫁衣襯著肌膚如雪礁遵。 梳的紋絲不亂的頭發(fā)上轻绞,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機(jī)與錄音佣耐,去河邊找鬼政勃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛兼砖,可吹牛的內(nèi)容都是我干的奸远。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼讽挟,長吁一口氣:“原來是場噩夢啊……” “哼懒叛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起耽梅,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤薛窥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后眼姐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诅迷,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年众旗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了罢杉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贡歧,死狀恐怖滩租,靈堂內(nèi)的尸體忽然破棺而出赋秀,到底是詐尸還是另有隱情,我是刑警寧澤持际,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布沃琅,位于F島的核電站,受9級特大地震影響蜘欲,放射性物質(zhì)發(fā)生泄漏益眉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一姥份、第九天 我趴在偏房一處隱蔽的房頂上張望郭脂。 院中可真熱鬧,春花似錦澈歉、人聲如沸展鸡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽莹弊。三九已至,卻和暖如春涡尘,著一層夾襖步出監(jiān)牢的瞬間忍弛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工考抄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留细疚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓川梅,卻偏偏與公主長得像疯兼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子贫途,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評論 2 355

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,144評論 25 707
  • 前言 首先請大家看幾張圖: 以上的效果吧彪,一般我們統(tǒng)稱為沉浸式狀態(tài)欄。其實(shí)潮饱,這種叫法不是很準(zhǔn)確来氧,而且也沒有沉浸式狀態(tài)...
    宇是我閱讀 3,853評論 2 28
  • 轉(zhuǎn)載若蘭明月 沉浸式狀態(tài)欄 Google從android kitkat(Android 4.4)開始,給我們開發(fā)者...
    天天大保建閱讀 759評論 0 1
  • 我看見 春去秋來 葉落于土 我看見 時(shí)鐘滴答 生命在逝 我看見 父母白發(fā) 親養(yǎng)不在 我看見 車輪翻轉(zhuǎn) 回轉(zhuǎn)不得 我...
    AlexWu閱讀 216評論 0 4