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


当前回答

我只会使用DP。

有很多关于使用“sp”字体尺寸的谈话,虽然我欣赏这一点,我不认为这是从设计观点做正确的事情,你可以结束打破你的设计,如果用户有一些有趣的字体尺寸的选择,用户将最终责怪应用程序,而不是自己的生活选择。

此外,如果你在160dpi平板电脑上使用 sp-font 应用程序,你会发现一切都在扩展......但你的字体,这在比较中会看起来很小。

虽然“sp”字体的想法有一个好心,但这是一个糟糕的想法。

其他回答

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

我已经计算了下面的公式,以便将 dpi 转换为 dp 和 sp

sp = 尺寸独立像素

dpi = 密度像素

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

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

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

px - 一个像素,相同于什么在CSS,JavaScript,等使用 sp - 规模独立的像素 dip - 密度独立的像素

通常 sp 用于字体大小,而 dip 用于其他人(也称为 dp)。

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

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

屏幕尺寸和密度