Android沉浸欄適配(4.4版,5.0或以上版,帶有虛擬鍵版)

首先,我們來看張圖


這是張4.4版本的圖,我們可以看到,狀態(tài)欄部分是黑色的,在來看看QQ4.4版本是怎樣的


可以看到,狀態(tài)欄部分和頭部的顏色是連在一起的,有時候我們的需求需要我們適配到4.4版本,那么我們需要怎么做呢?


我們知道,我們的樣式是存放在res的values的styles.xml下,所以,我們?nèi)胧值牡谝徊骄褪俏覀兊膕tyles文件

首先,我們需要針對不同的版本創(chuàng)建不同的styles文件,對不同的版本進(jìn)行適配,分別是values-v19和values-v21,代表的是4.4和5.0版本


我們?nèi)バ薷哪J(rèn)的values下的styles.xml:


可以看到,這里使用的是NoActionBar的樣式,從字面上很容易理解

然后,看看19和21下的styles樣式:
values-v19:

values-v21:


這樣,就完成了基本的適配了,然后我們在AndroidMainfest里調(diào)用


現(xiàn)在來看看布局文件怎么寫


這里為什么要寫一個20dp高的TextView呢,因為我們在styles文件中將狀態(tài)欄隱藏了,所以我們需要一個view去填充這個距離,當(dāng)然,也有其他的寫法,這樣寫是比較懶的寫法,很多應(yīng)用也會使用這種寫法,比如QQ,而手機的狀態(tài)欄的高度大概就這個高度左右,然后在里面寫你自己需要的布局,有人會說那圖片會不會適配呢?注意看,我的LinearLayout的background使用的就是一張圖片,所以這個問題不用擔(dān)心,來張布局圖


到這里,就完了嗎?并沒有,我們很容易忽略了底部導(dǎo)航欄,因為有些手機,是有虛擬按鍵的,如果我們不做點什么,運行到這種手機上的時候,會發(fā)現(xiàn),虛擬按鍵把我們的底部導(dǎo)航欄遮住了,這就很尷尬了,所以我們必須做點什么,怎么做呢?也很簡單,只要我們監(jiān)測到有虛擬鍵,我們就獲取虛擬鍵盤的高度,并且把布局設(shè)到虛擬鍵盤上面,下面看代碼

然后,在MainActivity的onCreate方法里調(diào)用


我們的每個Activity都需要這么點代碼,因此,最好就將它們封裝到一個BaseActivity里面,然后繼承,就可以了,這樣的話,我們就完成了適配了,不管是顏色還是圖片都可以適配,下面來幾張我在項目中的截圖,分別是4.4版,5.0以上版和帶有虛擬鍵盤版的截圖,感受下

4.4版的頭部會有點黑
5.0版
虛擬鍵盤版(請忽略中間變形的圖片,這個版本是舊的版本)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容