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


当前回答

计算像素密度

密度独立性

屏幕像素密度和分辨率取决于平台,设备独立的像素和可扩展的像素是提供一个灵活的方式,以适应整个平台的设计。

计算像素密度 匹配英寸的像素数量被称为像素密度. 高密度屏幕每英寸比低密度的像素多。

密度独立的像素,写作为dp(发音为“dips”),是灵活的单位,规模在任何屏幕上均匀的尺寸。

低密度屏幕显示与密度独立高密度屏幕显示与密度独立

其他回答

任何与文本和外观的尺寸相关的东西都必须使用 sp 或 pt. 因此,任何与控制器、布局等尺寸相关的东西都必须使用 dp。

您可以在其位置使用 dp 和 dip。

sp = 尺寸独立像素

dpi = 密度像素

sp 接收设备的文本大小,而 dp 接收设备密度标准(不会在设备中改变) 说 100sp 文本可以占用屏幕的 80% 或屏幕的 100% 取决于设备中设置的字体大小

使用 sp 和 dp 为 UX 考虑的文本大小。

此外,请注意,人们在手机上使用自定义字体,因此缺乏字体可能会导致空间和所有问题。 说文本大小12sp为自定义字体可能需要一些比默认字体额外的像素。

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

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

屏幕尺寸和密度

来自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设计文档中找到。

下面是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)