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


当前回答

基本上,唯一适用的 px 时间是 1 px,如果您想要屏幕上的一个像素,就像在分配器的情况下一样:

在 > 160 dpi 上,您可以获得 2-3 像素,

在 > 120 dpi 中,它旋转到 0.

其他回答

来自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将所有实际的屏幕大小组成四个通用大小:小,正常,大,和超大。 屏幕密度 屏幕的物理区域内的像素数量; 通常称为dpi(点每英寸)。 例如,一个“低”密度屏幕在特定物理区域内有较少的像素,比较

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

屏幕尺寸和密度

屏幕大小:

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

方向:

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

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

参考:Android开发者网站

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

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

我将详细介绍如何准确地将 dp 转换为 px:

如果在 mdpi 设备上运行,150 x 150 px 图像将占屏幕空间的 150 * 150 dp. 如果在 hdpi 设备上运行,150 x 150 px 图像将占屏幕空间的 100 * 100 dp. 如果在 xhdpi 设备上运行,150 x 150 px 图像将占屏幕空间的 75 * 75 dp.

相反的方式:说,你想添加一个图像到你的应用程序,你需要它填写一个100 * 100dp控制。

100 * 100 px 图像为 mdpi 150 * 150 px 图像为 hdpi 200 * 200 px 图像为 xhdpi