Ω一、为什么需要这么多单位?

手机屏幕越做越大,像素越来越高,如果只用物理像素(px)做设计,同样的 100 px 在高清屏上会比低清屏小很多。为了让元素在不同设备上保持视觉大小一致,业界引入了逻辑单位:Android 用 dp,iOS 用 pt,Web 用 rem。

理解它们之间的关系,才能把 UE 稿里 iPhone XS Max 的 1242 px 设计稿无缝搬到 Android 工程里。

二、先把概念一次讲清

px

物理像素点,设计稿上的“绝对尺寸”。iPhone XS Max 的屏幕宽就是 1242 px。

dpi / ppi

每英寸的像素数。iPhone XS Max 的计算公式:

\begin{align} ppi &= \sqrt{\text{width}^2 + \text{height}^2} \div inch \\ &= \sqrt{(1242^2 + 2688^2)} \div 6.5 ≈ 456 \end{align}
在移动端 dpi 与 ppi 几乎同义,可互换。公式里的 6.5 是屏幕尺寸(英寸)

density

Android 把 160 dpi 设为基准,density = ppi ÷ 160。
iPhone XS Max 的 density ≈ 456 ÷ 160 ≈ 2.85,即 xsmax 的密度是 2.85。
density 决定了「1 dp 等于多少 px」:
1 dp = density px。

dp(density-independent pixel)

逻辑像素,Android 布局专用。系统根据设备 density 把 dp “翻译”成真正的 px。1dp 的实际大小在 160 dpi 屏幕上等于 1px。
好处:写一套数值,所有屏幕通用

sp

与 dp 伸缩规则相同,但额外跟随用户字体大小设置,用于文字。

rem

设计工具里用的“虚拟像素”。把任意宽度的设计稿等比压扁到 360 宽之后得到的尺子。
公式:1 rem = 1 dp(在 360 dp 基准下)。
TemPad 插件里填 360 : 945(945 ≈ 1242 ÷ 2.625(420ppi/160))即可一键把 px 转成 dp。

Info

1242 是设计稿的屏幕宽(iPhone xs max)

三、公式

dp = px ÷ (dpi ÷ 160)

px = dp × (dpi ÷ 160)

五、一总结

UE 稿的 px / xml 里布局的密度 = 工程 dp

iOS开发 各iPhone手机屏幕尺寸分辨率

安卓UI图px标注适配攻略:批量转化px为dp_android ui适配px-CSDN博客

https://zhuanlan.zhihu.com/p/34831282

【Android】UI设计师给的px尺寸单位,安卓如何换算成dp?_px转dp-CSDN博客

更新: 2025-09-25 11:55:50
原文: https://www.yuque.com/dongpozhouzi-mshe3/zhm85g/wfngz25c7s1nt9kq


相关笔记