1.前言
APP适配,在手机分辨率、dpi相差不是很大的情况下,主要考虑与平板、TV之间的适配。相差不是很大怎么定义呢,跑起来看界面效果就知道了。
2.背景
因项目的需要,原来跑在手机上的APP需要跑在平板上,
手机参数:1080X1920,480dpi
平板参数:1080X1920,160dpi
这里没有列出平板的尺寸,是因为看到dpi就能知道这两款设备屏幕尺寸相差很大。
3.初步方案
分别在values-mdpi,values-land-mdpi文件下下新增dimens文件适配平板上即可,然后美滋滋的跑在平板上,确实能成功适配。以下是适配前后values文件夹的对比
适配前.png
适配后.png
当以为任务顺利完成时,顺手跑在手机上,结果翻车了
适配平板之前.png
适配平板以后.png
经分析发现,原本手机是匹配values,现在变成values-mdpi,跟平板设置一样。
为什么会这样呢?这跟values的匹配规则有关。我当时以为手机没有对应的values,应该会匹配到values,其实不是这样。
values适配规则.png
因为我的手机是480dpi,所以从xxhdpi开始匹配,基本原则就是:先高后低,最后是values。按照这个原则,手机匹配到了values-mdpi,而不是values。
4.解决方案
为480dpi的手机新增适配文件,values-xxhdpi,values-land-xxhdpi文件,就可以解决。
5.新问题思考
如果某手机就是160dpi,但分辨率是320X480的呢?同样会匹配到values-mdpi,values-land-mdpi,这样就会有问题。可以这样解决,修改values-mdpi为values-mdpi-1920x1080,修改values-land-mdpi为values-land-mdpi-1920x1080。这样160dpi的手机就会匹配到values上。
以上分析有不对的地方,大家可以讨论下,互相学习哦!下一篇重点分析values、drawable的匹配规则。
网友评论