密度无关像素 (dp) 和可缩放像素 (sp) 对于构建布局和呈现能够针对各种 Android 设备屏幕密度、尺寸类别、外形规格和宽高比提供统一响应的字体至关重要。
断球数
- 如果使用基线网格,请遵循 4 和 8 的测量值。
- 以 dp 和 sp (而不是像素)表示规范。
- 导出所有分桶的位图/光栅图形。
- 采用响应式思维进行设计,并考虑不同的大小类别、分辨率和宽高比。
- 密度无关像素 (dp):密度无关像素是一种灵活的单位,可以缩放以便在任何屏幕上实现一致的尺寸。它们基于屏幕的物理密度。这些单位相对于 160 dpi(每英寸点数)屏幕确立,在该屏幕上 1 dp 大致等于 1 px。
- 可缩放像素 (sp):可缩放像素与 dp 的功能相同,但适用于字体。sp 的默认值与 dp 的默认值相同。Android 系统会根据设备以及用户在 Android 设备的“设置”应用中设定的偏好设置,计算要使用的实际字体大小。
![](https://developer.android.google.cn/static/images/design/ui/mobile/grids-and-units-1-dp-and-sp.png?authuser=5&hl=sl)
这些度量单位之间的主要区别在于,可缩放的像素会保留用户的字体设置。如果用户的无障碍功能采用较大文本设置,那么字体大小设置与文本大小偏好设置一致。了解如何在 Compose 中更改字体大小。
Android 使用这些单位来帮助在各种设备和分辨率之间进行缩放和转换。
密度分区
高密度屏幕的每英寸像素数比低密度屏幕的高。因此,相同像素尺寸的界面元素在低密度屏幕上看起来较大,在高密度屏幕上看起来较小。因此,您不应以像素为单位声明测量值。
Android 将屏幕密度范围划分到“存储分区”中,并使用这些密度向设备提供一组最佳的资源。最常用的密度分桶是 mdpi
、hdpi
、xhdpi
、xxhdpi
和 xxxhdpi
(nodpi
和 anydpi
指的是不会根据设备分辨率进行缩放的分桶,通常用于矢量可绘制对象),每个分桶都对应于应用的一个资源文件。
![](https://developer.android.google.cn/static/images/design/ui/mobile/grids-and-units-2-density-buckets.png?authuser=5&hl=sl)
dp 的计算公式如下:
dp =(以像素为单位的宽度 * 160)/屏幕密度
网格
基准网格
使用底层网格进行构建有助于在整个界面中实现一致的间距和对齐。Android 界面使用 8 dp 网格来实现布局、组件和间距。
较小的元素(如图标、字体和组件中的某些元素)最好与 4 dp 网格对齐。
![](https://developer.android.google.cn/static/images/design/ui/mobile/grids-and-units-3-baseline-grids.png?authuser=5&hl=sl)
列网格
列可构建网格结构,通过划分正文区域内的内容,为布局提供垂直定义。内容将放置在屏幕中包含列的区域。与底层网格对齐,使内容对齐,但应保持灵活的尺寸。请参阅布局基础知识,了解有关如何设置列网格和应用内容的基础知识。
![](https://developer.android.google.cn/static/images/design/ui/mobile/grids-and-units-4-column-grid.png?authuser=5&hl=sl)
如需详细了解如何针对各种外形规格创建灵活布局,请参阅 Material 3 规范布局页面。
大小类别
窗口大小类别是一组主观的视口断点,有助于您设计、开发和测试响应式和自适应布局。Android 将窗口大小类别分为 3 种:较小、中等和较大。详细了解窗口大小类别。
宽高比
宽高比是指元素的宽度与其高度的比例。宽高比的编写形式为“宽:高”。
为了保持布局的一致性,请为图片、Surface 和屏幕尺寸等元素使用一致的宽高比。
建议在整个界面中使用以下宽高比:
- 16:9
- 3:2
- 4:3
- 1:1
- 3:4
- 2:3