Android沉浸栏适配(4.4版,5.0或以上版,带有虚拟键版)

首先,我们来看张图

Android沉浸栏适配(4.4版,5.0或以上版,带有虚拟键版)_第1张图片

这是张4.4版本的图,我们可以看到,状态栏部分是黑色的,在来看看QQ4.4版本是怎样的

Android沉浸栏适配(4.4版,5.0或以上版,带有虚拟键版)_第2张图片

可以看到,状态栏部分和头部的颜色是连在一起的,有时候我们的需求需要我们适配到4.4版本,那么我们需要怎么做呢?


我们知道,我们的样式是存放在res的values的styles.xml下,所以,我们入手的第一步就是我们的styles文件

首先,我们需要针对不同的版本创建不同的styles文件,对不同的版本进行适配,分别是values-v19和values-v21,代表的是4.4和5.0版本


我们去修改默认的values下的styles.xml:

Android沉浸栏适配(4.4版,5.0或以上版,带有虚拟键版)_第3张图片

可以看到,这里使用的是NoActionBar的样式,从字面上很容易理解

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

Android沉浸栏适配(4.4版,5.0或以上版,带有虚拟键版)_第4张图片

values-v21:

Android沉浸栏适配(4.4版,5.0或以上版,带有虚拟键版)_第5张图片

这样,就完成了基本的适配了,然后我们在AndroidMainfest里调用


现在来看看布局文件怎么写

Android沉浸栏适配(4.4版,5.0或以上版,带有虚拟键版)_第6张图片

这里为什么要写一个20dp高的TextView呢,因为我们在styles文件中将状态栏隐藏了,所以我们需要一个view去填充这个距离,当然,也有其他的写法,这样写是比较懒的写法,很多应用也会使用这种写法,比如QQ,而手机的状态栏的高度大概就这个高度左右,然后在里面写你自己需要的布局,有人会说那图片会不会适配呢?注意看,我的LinearLayout的background使用的就是一张图片,所以这个问题不用担心,来张布局图


到这里,就完了吗?并没有,我们很容易忽略了底部导航栏,因为有些手机,是有虚拟按键的,如果我们不做点什么,运行到这种手机上的时候,会发现,虚拟按键把我们的底部导航栏遮住了,这就很尴尬了,所以我们必须做点什么,怎么做呢?也很简单,只要我们监测到有虚拟键,我们就获取虚拟键盘的高度,并且把布局设到虚拟键盘上面,下面看代码

Android沉浸栏适配(4.4版,5.0或以上版,带有虚拟键版)_第7张图片

然后,在MainActivity的onCreate方法里调用


我们的每个Activity都需要这么点代码,因此,最好就将它们封装到一个BaseActivity里面,然后继承,就可以了,这样的话,我们就完成了适配了,不管是颜色还是图片都可以适配,下面来几张我在项目中的截图,分别是4.4版,5.0以上版和带有虚拟键盘版的截图,感受下

Android沉浸栏适配(4.4版,5.0或以上版,带有虚拟键版)_第8张图片
4.4版的头部会有点黑
Android沉浸栏适配(4.4版,5.0或以上版,带有虚拟键版)_第9张图片
5.0版
Android沉浸栏适配(4.4版,5.0或以上版,带有虚拟键版)_第10张图片
虚拟键盘版(请忽略中间变形的图片,这个版本是旧的版本)

你可能感兴趣的:(Android沉浸栏适配(4.4版,5.0或以上版,带有虚拟键版))