Android 屏幕适配 - 最小宽度限定符

时间:2024-04-08 16:38:07

Android 屏幕适配有多种方式,本文介绍下最小宽度限定符适配。

1) Android 屏幕适配概念

物理像素点(px) : 代表的是手机的物理像素点

密度无关像素(dp):  密度无关像素等于160dpi 屏幕上的一个物理像素,这是系统的基线密度

屏幕密度(dpi) : 屏幕每英寸上的像素点,Android 将所有的屏幕密度分组为6中通用密度:低(ldpi), 中(mdpi), 高(hdpi), 超高(xhdpi),

xxhdpi 和 xxxhdpi.

分辨率:屏幕上物理像素的总数。

关于px, dp,dpi 之间的转换公式:

px = dp * (dpi / 160).

2) Android 中 sw<N>dp限定符适配原理:

smallesWidth 限定符适配原理与 屏幕分辩率限定符适配原理一样, 系统都是根据限定符去寻找对应的dimens.xml 文件。区别在于屏幕分辨率限定符适配是拿px 值等比例缩放,而smallestWidth 限定符适配是拿dp 值等。 "最小宽度"是不区分方向的,即无论是宽度还是高度,哪一边小就认为哪一边是最小宽度。

最小宽度限定符适配好处:

需要的dimens.xml 文件少, 无论手机的屏幕像素多少,密度多少, 90%的手机的最小宽度都为360dp, 所以采用最小宽度适配只需要少量dimens.xml 文件。

最小宽度限定符适配匹配原则:

例如设备最小宽度是360dp, 就会先去找values-360dp, 发现会向下找values-320dp, 如果还是没有才找默认的values下的dimens.xml .

sw<N> dp 限定符N的计算公式:

N = width / (dpi / 160), width 为"最小宽度"

3) 使用步骤:

1)  生成所有设备对应的dimens.xml 文件, 可以采用工具 生成。 需要适配的最小宽度值为 320,360, 384 ,392,400,410,411,428,432,480,533,592,600,640,662,720,768,800,811,820,960,1024,1280,1365 (包含了平板和TV).

生成的dimens.xml 文件如下:

Android 屏幕适配 - 最小宽度限定符     Android 屏幕适配 - 最小宽度限定符

2) 根据设计图标注, 标注多少px, 布局中就写多少px, 格式如 @dimen/px_XX

 

参考:

https://www.jianshu.com/p/1302ad5a4b04

https://github.com/byhook/dimens-maker