本节介绍Android中的 dp、sp 以及像素的有关知识。整理自Material Design 布局– 单位 & 度量
目录
(1)像素密度
(2)dp
(3)sp
(4)不同屏幕分辨率下的缩放
正文
(1) 像素密度
概念:每英寸所包含的像素数量被称为 “像素密度” 。
高密度的屏幕每英寸拥有的像素数量比低密度的要多。所以 UI 元素(比如按钮)在低密度的屏幕上看起来更大,而在高密度的屏幕上看起来更小。
屏幕分辨率则是屏幕内的像素总数。
(2)dp
dp 称为与密度无关的像素,又称为与设备无关的像素,意思就是UI元素在不同的设备上、不同的像素密度下显示相同的大小。
1dp 等于密度为 160 的屏幕上的 1 个物理像素。dp 的计算方式为:
dp = (以像素为单位的宽度 * 160) / 屏幕密度
编写 CSS 时,不用管 dp 或 sp,统一使用 px,dp 只在 Android 开发时使用。
举例:
屏幕密度 | 以像素为单位的屏幕宽度 | 以与密度无关的像素为单位的屏幕宽度 |
120 | 180 px | 240 dp |
160 | 240 px | |
240 | 360 px |
(3)sp
sp 称为可缩放像素。在进行 Android 开发时,sp 和 dp 功能一样,但仅用在字体上。1sp 的默认值和 1dp 一样。
sp 和 dp 的主要区别是 sp 保留了用户的字体设置。
(4)不同屏幕分辨率下的图片缩放
通过使用以下比率,可以使图片在不同分辨率的屏幕上看起来一样:
屏幕分辨率 | dpi | 像素比例 | 图片尺寸(像素) |
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 |