本文最后修改于 2020 年 9 月 19 日
单位:px、dp、sp
px
像素
dp
安卓中的相对大小
又称 dip,Device Independent Pixels(设备独立像素)。
与屏幕尺寸有关。一般来说,同样尺寸的屏幕以 dp 计量的分辨率是一样的,如一般手机屏幕分辨率会设置成 360 dp。可以在开发者选项中手动更改 dp 。
sp
用于设置字体
sp 原理与 dp 差不多,是专门用于设置字体大小的。手机设置中可以调整字体大小。以 sp 为单位,更改设置中字体大小,并不会改变 dp 的显示。
Google 推荐使用 sp 设置字体大小并且大于等于 12 sp。
阿里巴巴安卓开发手册推荐字体大小单位设置为 dp,解释为可以更好的还原 UI 设计,不过我觉得还是 sp 更好。
说明
在 XML
布局文件中,为了让不同设备屏幕拥有统一的显示效果,除了 sp 用于设置文字大小外,其余要用尺寸大小的地方几乎都用 dp。在代码中情况又有所不同,Android 用于设置大小的函数都以 px 为单位。无论是 LayoutParams 里的 width 和 height ,还是 setMargins 和 setPadding,参数单位都是 px,要想在代码中使用 dp 设置布局大小或间距,得先把 dp 值转换成 p