10.5、11英寸同分辨率平板密度组适配及独立dimens.xml创建咨询
适配方案
问题根因
Android的密度组按预设区间档位匹配,会把设备实际PPI四舍五入到标准密度值(mdpi=160、hdpi=240、xhdpi=320等)。276PPI和287PPI都处于hdpi到xhdpi的区间,会被系统分配相同的密度配置值,因此默认共用同一套dimens资源,无法区分适配。
独立dimens创建方法
可以通过最小宽度(smallest width,sw)限定符为两款设备创建独立的dimens资源,这是Android官方推荐的适配方案,不会随屏幕旋转切换,匹配稳定性高。
步骤1:计算两款设备的最小宽度dp值
最小宽度指设备屏幕短边的dp值,计算公式为:最小宽度dp = 屏幕短边px / (PPI / 160)
两款设备的短边分辨率均为1600px,分别计算:
- 10.5英寸款:PPI=287,计算得
1600 / (287/160) ≈ 892dp - 11英寸款:PPI=276,计算得
1600 / (276/160) ≈ 928dp
步骤2:创建对应资源文件夹
在项目res目录下新建两个资源文件夹,分别存放对应设备的dimens文件:
- 适配10.5英寸平板:
res/values-sw892dp/dimens.xml - 适配11英寸平板:
res/values-sw928dp/dimens.xml
只需要在这两个文件中写入两款设备有差异的尺寸项即可,通用尺寸项保留在默认的res/values/dimens.xml中做兜底,不需要全量复制。
验证方式
如果担心计算存在误差,可以连接设备后执行adb命令获取设备真实的最小宽度值:adb shell dumpsys window | grep "Smallest width"
返回的数值就是设备的实际sw值,直接用该数值命名资源文件夹即可保证匹配准确。
内容的提问来源于stack exchange,提问作者user3698465
相关产品推荐
相关产品推荐

