You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin运行时获取手机屏幕厘米尺寸及像素位置单位转换问题

像素/DP转屏幕物理厘米坐标实现方案

结论先行

你已经具备dp和像素互转能力的前提下,完全可以在运行时将坐标转换为厘米单位。

核心转换逻辑

厘米属于物理长度单位,转换的核心是获取屏幕的真实物理像素密度,而非适配用的归一化密度值,具体步骤如下:

  • 第一步:获取屏幕真实X/Y轴PPI(每英寸像素数)
    注意不要使用系统适配用的基准DPI(比如安卓的densityDpi、iOS的point缩放系数对应的归一化DPI),要获取设备硬件上报的真实像素密度:
    • 安卓端直接读取DisplayMetrics类的xdpi、ydpi属性即可,分别对应X、Y轴每英寸的真实像素数
    • iOS端可以通过UIScreen的官方属性读取真实PPI数值
  • 第二步:代入转换公式计算
    固定换算常量:1英寸 = 2.54厘米
    先计算每厘米对应像素数:
    X轴每厘米像素数 = xdpi / 2.54
    Y轴每厘米像素数 = ydpi / 2.54
    坐标转换:
    厘米坐标X值 = 像素X坐标 / X轴每厘米像素数
    厘米坐标Y值 = 像素Y坐标 / Y轴每厘米像素数
    如果你当前持有的是dp坐标,先把dp转为真实像素坐标,再代入上述公式即可。

常见问题说明

  • 绝大多数主流消费级设备上报的真实PPI数值校准准确,转换误差在1%以内,可以满足普通应用的使用需求
  • 极少数老旧设备可能存在厂商上报PPI不准的问题,如果你的应用对精度要求极高(比如工业级测量场景),可以增加用户手动校准环节:引导用户将已知物理长度的标准物品(如身份证,宽度固定为8.56厘米)放置在屏幕上,采集对应像素长度反算真实密度,抵消系统上报误差。

内容的提问来源于stack exchange,提问作者nitzan karby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:06:05