先区分测量对象
设计稿和截图中的长度通常以像素表示,而 Android 布局中的控件尺寸常用 dp。像素是图像中的采样单位;dp 是随逻辑显示密度缩放的布局单位。把截图测到的像素值直接填入 dp,会在高密度屏幕上得到明显偏大的控件。
还需要确认截图有没有被聊天软件、浏览器或图片编辑器缩放。只有原始截图中的像素尺寸,才能与设备渲染结果进行直接比较。显示器上看起来多大,并不是可靠的测量依据。
用公式还原一次换算
对 dp 与物理像素的常用换算,缩放系数是逻辑 dpi 除以 160。可以写成:
scale = densityDpi / 160
px = dp × scale
dp = px / scale假设设备逻辑密度为 420 dpi,那么 scale 为 2.625。一个 48 dp 的控件,理论尺寸为 126 px。反过来,截图里 48 px 的间距约等于 18.286 dp。这些数值是计算示例,不代表某一具体手机的默认设置。
你可以用屏幕密度换算器复算,并对照常见密度档位。渲染最终需要落到像素网格上,实际测量可能存在取整差异。
逻辑密度不等于真实面板 PPI
设备的屏幕分辨率、对角线长度和真实 PPI,不能直接代替 Android 当前使用的逻辑 densityDpi。显示大小设置、测试覆盖值或厂商配置都可能影响布局缩放。
adb shell wm size
adb shell wm density这两条是不带修改参数的查询命令。若输出含 Override 值,应记录覆盖状态。对具体应用窗口的准确测量,仍应结合该窗口使用的显示指标,特别是多显示器、折叠屏或兼容模式场景。
字体不要简单套用同一条公式
sp 除了密度,还需要响应用户的字体大小偏好。较新的 Android 字体缩放可能采用非线性方式,所以不要依靠一个固定乘数,把所有字号从 sp 手工换成 px。
布局尺寸与文字尺寸应分别验证。按钮高度对齐了,字体基线、字重、行高和内边距仍可能不同。排查时先分开测量容器边界和文字区域,再判断是哪一层造成偏差。
本站换算器只处理 dp 和 px,不把它包装成字体 sp 的准确换算工具。
一个可重复的截图对齐流程
- 保存未缩放的原始截图,并记录分辨率和当前逻辑密度。
- 先测固定边界,例如工具栏、按钮矩形和卡片边缘。
- 把测得的 px 换算成 dp,再与布局定义比较。
- 单独检查系统栏、窗口 inset 和字体设置。
- 修改后在同一设备状态下重拍,避免同时改变密度与布局。
这样能把“看起来差一点”转化成具体的尺寸差异。若只能拿到缩放后的图片,应明确标注近似结果,而不是声称已完成像素级一致性验证。