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


当前回答

定义

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 可用性 大文本

用什么?

其他回答

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();

px = 指屏幕上的像素可用于像素计算 px = dp * (dpi / 160) 可用于 dip = 密度独立的像素相当于 dp sp = 只能用于文本

Android px、dp、sp

像素 px (绝对绝对) 密度独立的像素 dp, dip - 允许你不依赖像素,并在屏幕上有相同的结果不同像素每英寸 尺寸独立的像素 sp, sip - 相同的像素 dp 但为字体

[iOS 像素 vs 点 vs 单位]

来自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应用程序UI的好文章,我想把它留在这里,只是在这个领域寻找的人。 是的,我知道它在某种程度上被描述在谷歌文件(并在上面的帖子中提到),我读到它,但它对我来说并不好(是的,我可能太愚蠢)。