首先,我们来看张图
这是张4.4版本的图,我们可以看到,状态栏部分是黑色的,在来看看QQ4.4版本是怎样的
可以看到,状态栏部分和头部的颜色是连在一起的,有时候我们的需求需要我们适配到4.4版本,那么我们需要怎么做呢?
我们知道,我们的样式是存放在res的values的styles.xml下,所以,我们入手的第一步就是我们的styles文件
首先,我们需要针对不同的版本创建不同的styles文件,对不同的版本进行适配,分别是values-v19和values-v21,代表的是4.4和5.0版本
我们去修改默认的values下的styles.xml:
可以看到,这里使用的是NoActionBar的样式,从字面上很容易理解
然后,看看19和21下的styles样式:
values-v19:
values-v21:
这样,就完成了基本的适配了,然后我们在AndroidMainfest里调用
现在来看看布局文件怎么写
这里为什么要写一个20dp高的TextView呢,因为我们在styles文件中将状态栏隐藏了,所以我们需要一个view去填充这个距离,当然,也有其他的写法,这样写是比较懒的写法,很多应用也会使用这种写法,比如QQ,而手机的状态栏的高度大概就这个高度左右,然后在里面写你自己需要的布局,有人会说那图片会不会适配呢?注意看,我的LinearLayout的background使用的就是一张图片,所以这个问题不用担心,来张布局图
到这里,就完了吗?并没有,我们很容易忽略了底部导航栏,因为有些手机,是有虚拟按键的,如果我们不做点什么,运行到这种手机上的时候,会发现,虚拟按键把我们的底部导航栏遮住了,这就很尴尬了,所以我们必须做点什么,怎么做呢?也很简单,只要我们监测到有虚拟键,我们就获取虚拟键盘的高度,并且把布局设到虚拟键盘上面,下面看代码
然后,在MainActivity的onCreate方法里调用
我们的每个Activity都需要这么点代码,因此,最好就将它们封装到一个BaseActivity里面,然后继承,就可以了,这样的话,我们就完成了适配了,不管是颜色还是图片都可以适配,下面来几张我在项目中的截图,分别是4.4版,5.0以上版和带有虚拟键盘版的截图,感受下
4.4版的头部会有点黑 5.0版 虚拟键盘版(请忽略中间变形的图片,这个版本是旧的版本)
网友评论