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


当前回答

屏幕大小:

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

方向:

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

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

参考:Android开发者网站

其他回答

dpi 每英寸点

同样,如果你有两个相似的屏幕大小,但不同的像素密度,说一个是800到1280像素(320dpi),而另一个是400到640像素(160dpi),我们不需要定义完全不同的布局为这两个设备,因为我们可以测量资产的密度独立像素,这是相同的两个设备。

尺寸独立的像素(sp)是字体大小的偏好单位. 为了可用性,Android允许用户自定义他们的设备的字体大小. 有问题阅读文本的用户可以增加他们的设备的字体大小. 你通常可以在显示设置在你的手机或平板电脑的字体大小下找到这个选项. 它经常也通过可用性设置可用。

sp = 尺寸独立像素

dpi = 密度像素

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

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

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

dp 是 dip. 使用它为一切(边缘,粘贴等)。

只用 sp 为 {text-size}。


为了在不同的屏幕密度上获得相同的尺寸,Android在运行时间中将这些单元翻译成像素,所以没有什么可怕的数学。


在不同屏幕大小上看到 px、dp 和 sp 的差异。

此分類上一篇

来源:Android编程:The Big Nerd Ranch 指南

sp = 尺寸独立像素

dpi = 英寸点

我们应该避免使用 sp. 我们应该使用 dp 支持多个屏幕。

Android 支持不同的屏幕分辨率

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

与其他密度相同。

像素 = dp * (密度 / 160)

因此, 240 dpi 裝置的 1 dp 將有 = 1 * (240/160) = 3/2 = 1.5 像素。

480 dpi 裝置的 1 dp 將有 = 1 * (480/160) = 3 像素。

使用此 1.5 和 3 像素的知识,一个软件工程师可以设计不同的密度的布局。

要检查任何设备的屏幕参数:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

Toast.makeText(
    this,
    "4:" + metrics.heightPixels + "," + metrics.density + ","
    + metrics.densityDpi, Toast.LENGTH_LONG).show();

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