测量单位 px、dip、dp 和 sp 的区别是什么?


当前回答

下面是Android使用的公式:

px = dp * (dpi / 160)

在哪里 dpi 是下列屏幕密度之一. 所有可能的密度列表请参阅这里

它定义了“DENSITY_*”的恒例。

ldpi (低) ~120dpi mdpi (中) ~160dpi hdpi (高) ~240dpi xhdpi (超高) ~320dpi xxhdpi (超高) ~480dpi xxxhdpi (超高) ~640dpi

从这里拿出来。

这将解决很多混乱,当翻译在px和dp之间,如果你知道你的屏幕dpi。

所以,让我们说你想要一个图像60dp的HDPI屏幕,然后物理像素大小60dp是:

px = 60 * (240 / 160)

其他回答

来自Android开发者文档:

px 像素 - 符合屏幕上的实际像素. 在英寸 - 基于屏幕的物理尺寸. 1 英寸 OR 2.54 厘米 mm > 毫米 - 基于屏幕的物理尺寸. pt > 点 - 1/72 英寸基于屏幕的物理尺寸. dp 或 dip > 密度独立的像素 - 基于屏幕的物理密度的抽象单位。

从了解密度独立在Android:

Density Bucket Screen Density Physical Size Pixel Size
ldpi 120 dpi 0.5 x 0.5 in 0.5 in * 120 dpi = 60x60 px
mdpi 160 dpi 0.5 x 0.5 in 0.5 in * 160 dpi = 80x80 px
hdpi 240 dpi 0.5 x 0.5 in 0.5 in * 240 dpi = 120x120 px
xhdpi 320 dpi 0.5 x 0.5 in 0.5 in * 320 dpi = 160x160 px
xxhdpi 480 dpi 0.5 x 0.5 in 0.5 in * 480 dpi = 240x240 px
xxxhdpi 640 dpi 0.5 x 0.5 in 0.5 in * 640 dpi = 320x320 px
Unit Description Units Per Physical Inch Density Independent? Same Physical Size On Every Screen?
px Pixels Varies No No
in Inches 1 Yes Yes
mm Millimeters 25.4 Yes Yes
pt Points 72 Yes Yes
dp Density Independent Pixels ~160 Yes No
sp Scale Independent Pixels ~160 Yes No

更多信息也可以在Google设计文档中找到。

dp-to-pixel 比例与屏幕密度相匹配,但不一定是直接比例。

注意:编辑器接受“dip”和“dp”,尽管“dp”与“sp”更一致。

尺寸独立的Pixels - 这类似于dp单元,但它也按用户的字体大小偏好进行尺寸。

屏幕大小 实际的物理大小,测量为屏幕的直径. 为了简单,Android将所有实际的屏幕大小组成四个通用大小:小,正常,大,和超大。 屏幕密度 屏幕的物理区域内的像素数量; 通常称为dpi(点每英寸)。 例如,一个“低”密度屏幕在特定物理区域内有较少的像素,比较

当添加多个屏幕支持时,应用程序不直接与分辨率工作;应用程序应仅涉及屏幕大小和密度,如一般化大小和密度组所规定的。

屏幕尺寸和密度

定义

px 或 dot 是物理屏幕上的像素。

dpi 是物理屏幕上的每英寸像素,代表屏幕密度。

Android 给多种密度的 alias 名称

ldpi (低) ~120dpi mdpi (中) ~160dpi hdpi (高) ~240dpi 大多数设备在2015年在这里 xhdpi (超高) ~320dpi Apple iPhone 4/5/6, Nexus 4 xxhdpi (超高) ~480dpi Nexus 5 xxxhdpi (超高) ~640dpi

dip 或 dp 是密度依赖的像素,即它们根据物理密度相当于多或少的像素。

1dp = 1px 在 mdpi 上

此分類上一篇

sp 或 sip 是尺寸独立的像素,它们在“大文本”选项在“设置” >“可用性”中启动时进行尺寸。

1sp = 1dp 1sp = 1.2dp 可用性 大文本

用什么?

屏幕大小:

对于简单性,Android将所有实际屏幕大小组成四个通用大小:小、正常、大、超大。

方向:

当添加多个屏幕支持时,应用程序不直接与分辨率工作;应用程序应仅涉及屏幕大小和密度,如通用大小和密度组所规定的。

一个虚拟像素单位,你应该在定义UI布局时使用,以以密度独立的方式表达布局尺寸或位置。 密度独立的像素相当于160dpi屏幕上的一个物理像素,这是系统对“中间”密度屏幕所承担的基密度。

参考:Android开发者网站