美文网首页Android随笔记录
Android沉浸栏适配(4.4版,5.0或以上版,带有虚拟键版

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

作者: ReturnYHH | 来源:发表于2016-12-05 20:24 被阅读0次

    首先,我们来看张图


    这是张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版 虚拟键盘版(请忽略中间变形的图片,这个版本是旧的版本)

    相关文章

      网友评论

        本文标题:Android沉浸栏适配(4.4版,5.0或以上版,带有虚拟键版

        本文链接:https://www.haomeiwen.com/subject/fbklmttx.html