布局 单位 & 度量

单位 & 度量

有些单位在不同的情境下所表示的含义不同。本章主要讨论逻辑像素、可扩展像素以及像素密度的概念。

像素密度 展开或收起内容 当内容收起时,箭头向下,当内容展开时,箭头向上。

每英寸所包含的像素数量被称为「像素密度」。高密度的屏幕每英寸所拥有的像素数量比低密度的要多。所以 UI 元素(比如按钮)在低密度的屏幕上看起来更大,而在高密度的屏幕上看起来更小。

屏幕分辨率则是屏幕内的像素总数。

屏幕密度 = 屏幕宽度(或高度)的像素数 / 屏幕宽度(或高度)的英寸数


高密度屏幕


低密度屏幕

逻辑像素(dp) 展开或收起内容 当内容收起时,箭头向下,当内容展开时,箭头向上。

「逻辑像素」是指在不同密度的屏幕上显示相同的 UI 元素。

逻辑像素(dips)是一个灵活的单位,用来统一不同屏幕尺寸上的元素缩放。在 Android 应用的开发中,使用 dp 来统一不同屏幕密度的元素显示。

1dp 等于 密度为 160 的屏幕上的 1 个物理像素。dp 的计算方式为:

dp = (宽度像素 * 160) / 屏幕密度

在 CSS 中则忽略 dp 和 sp 的存在,使用 px 就好了。仅在开发 Android 的时候才使用 dp。

屏幕密度

屏幕宽度的像素数量

屏幕宽度的逻辑像素

120

180 px

240 dp

160

240 px

240

360 px

如果你有三个 1.5 英寸宽的设备,即使屏幕密度不同,宽度的逻辑像素都是 240dp。

可缩放像素 (sp) 展开或收起内容 当内容收起时,箭头向下,当内容展开时,箭头向上。

开发 Android 应用的开发中,可缩放像素(sp)是同等于 dp 的,但仅用在字体上。1sp 的默认值与 1dp 相同。

sp 和 dp 最大的不同之处在于 sp 是特指用户的字体设定。用户在无障碍中使用大号字体时可以直接看到界面字号的改变。

为 dp 设计布局 展开或收起内容 当内容收起时,箭头向下,当内容展开时,箭头向上。

为屏幕设计布局时,使用 dp 来测量元素:

dp = (宽度像素 * 160) / 像素密度

例如:32 x 32 px 的图标在 320 像素密度的屏幕上等同于 16 x 16 dp。

图片自适应 展开或收起内容 当内容收起时,箭头向下,当内容展开时,箭头向上。

使用以下比例可以让不同分辨率的屏幕上的图片看上去一样:

屏幕分辨率

dpi

像素比例

图片尺寸 (pixels)

xxxhdpi

640

4.0

400 x 400

xxhdpi

480

3.0

300 x 300

xhdpi

320

2.0

200 x 200

hdpi

240

1.5

150 x 150

mdpi

160

1.0

100 x 100