引言:在開發(fā)Android應(yīng)用的時(shí)候,相信很多人都會發(fā)現(xiàn)絕大部分的APP都會使用沉浸式狀態(tài)欄,例如QQ,如下圖箭頭所指。
沉浸式狀態(tài)欄確切的說應(yīng)該叫做透明狀態(tài)欄。一般情況下,狀態(tài)欄的底色都為黑色,而沉浸式狀態(tài)欄則是把狀態(tài)欄設(shè)置為透明或者半透明。這種設(shè)計(jì)可以把手機(jī)的狀態(tài)欄設(shè)置成與APP頂部相同的顏色,這就使得切換APP時(shí),整個界面就好似切換到了與APP相同的風(fēng)格樣式一樣。在內(nèi)容展示上會顯得更加美觀。
今天我們來看看實(shí)現(xiàn)沉浸式狀態(tài)欄的兩種方式:
系統(tǒng)提供的方法
1) 在需要設(shè)置沉浸式狀態(tài)欄的Activity中設(shè)置兩個參數(shù)并設(shè)置一個背景圖片,方便查看效果。
2) 設(shè)置好參數(shù)后在MainActivity中編寫一個方法initState來初始化沉浸式狀態(tài)欄。需要注意的是,因?yàn)槌两綘顟B(tài)欄是在Android4.4的時(shí)候出現(xiàn)的,所以只有4.4及以后的版本才能使用。代碼中對當(dāng)前系統(tǒng)進(jìn)行判斷,符合要求(即系統(tǒng)是4.4或以上的版本)則設(shè)置成透明狀態(tài)欄。
3) 在setContentView(R.layout.activity_main)方法前取消APP默認(rèn)的頂欄,并且調(diào)用沉浸式狀態(tài)欄的方法。
4) 效果對比圖:
非沉浸式
沉浸式
怎么樣,效果是不是很不錯。。!但在測試時(shí)會出現(xiàn)兩種情況:
① 當(dāng)我沒有在布局中設(shè)置clipToPadding為true的時(shí)候,會對應(yīng)用自定的頂部Toolbar進(jìn)行拉伸;
② 當(dāng)我在布局中兩個參數(shù)都進(jìn)行設(shè)置后,頂部狀態(tài)欄變成了白色。
接下來的另一種方法就可以解決以上的問題。
動態(tài)適應(yīng)狀態(tài)欄高度設(shè)置布局
因?yàn)榈谝徊繒霈F(xiàn)的拉伸問題,所以我在Toolbar上方添加了一個隱藏LinearLayout,動態(tài)設(shè)置與狀態(tài)欄等高,抵消Toolbar拉伸。
1) 在xml布局的頂部添加一個隱藏布局。
2) 代碼中判斷系統(tǒng)版本,并通過反射設(shè)置隱藏布局高度。
3) 上述步驟完成后同樣也是在Activity中的setContentView()后進(jìn)行調(diào)用即可。
效果圖:
好啦,今天分享的內(nèi)容也就到此全部結(jié)束,謝謝大家的支持!
熱點(diǎn)新聞
課程問答