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 文件如下:
2) 根据设计图标注, 标注多少px, 布局中就写多少px, 格式如 @dimen/px_XX
参考: