Android 最新dimens适配方案

作者: ZuYuan | 来源:发表于2019-02-20 21:45 被阅读123次

前言

首先说明,我仍然采用的是dimens适配。但是dimens适配很早就出现了,我为什么又要说是最新的呢?我的意思是可以适配到最新的手机。
仍然不清楚px、density、dpi、dp之间关系的小伙伴可以看我另外一篇文章,讲得也很易懂~

老dimens适配方案的问题:

以前我们创建values文件夹的时候有一下两种创建形式:

尾缀dpi
尾缀dpi
其实这两种创建方式得到的结果是一样的。但是,问题来了!
现在有的手机分辨率不是谷歌官方支持的分辨率了,例如:红米note5 1080*2160,它的density变成了2.75,不再是1080px的3.0了。那么它对应的dpi就是440dpi,按照规则,就会采用values-320dpi目录下的dimens文件。你可能会觉得创建一个尾缀440dpi的文件夹不就可以了吗?答案是不可以,因为谷歌不支持,它会告诉你目录名不符合规范。

解决办法:

创建以w宽度尾缀的dimens文件,像下面这样:

尾缀w***dp
图中values-w360就是屏幕宽度在360dp以上的手机从这个文件夹中取值(当然是360dp ~ 390dp,因为390dp ~又是另外一个文件夹)。
还是来个例子直接:我有三部手机,宽720p、density2.0=宽360dp的手机1宽1080p、density2.75=宽392dp的手机2宽1080p、density3.0=宽360dp的手机3。那么在给view设置宽100dp的时候,显然view在手机2的屏幕占比要大于手机1和手机3,这就不对了。所以我像上图所示建立了两个values文件夹, 360dp
392dp

这样在系统取值的时候,就根据你手机的dp宽度来找到适合你手机使用的dp值,以此达到了屏幕适配的效果(即相同view在不同手机中占比一致,这里是宽度占比一致)。

最后

dimens目录可以有多种,最方便的办法就是建立一个主函数类来自动生成dimens文件。这个方法就不贴代码啦,因为生成dimens文件我也是看的别人的博客,稍微百度下就来了~

笔者水平有限,有写得不好的地方,请大胆指出~
转载请注明出处~

相关文章

网友评论

    本文标题:Android 最新dimens适配方案

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