Android开发中的各种尺度单位
px
像素(pixel),表示屏幕上的一个物理像素点。不建议直接使用 px
绘制UI,因为受像素密度的影响,以 px
为单位绘制的UI在不同手机上显示的实际大小会不同。
dp
密度无关像素。Android 建议使用的一种虚拟像素单位,可以使定义的UI布局在不同像素密度的设备上具有相同的效果。像素密度dpi = 每英寸长度含有的像素点数量 / 屏幕纵向(横向)长度 / 屏幕纵向(横向)像素数目。这种密度无关像素尺寸等同于160 dpi
屏幕上的一个物理像素。所以 px = dp * (dpi / 160)
。
Android系统定义了四种像素密度:
名称 | 简称 | dpi |
---|---|---|
low | ldpi | 约120dpi |
medium | mdpi | 约160dpi |
high | hdpi | 约240dpi |
extra-high | xhdpi | 约320dpi |
extra-extra-high | xxhdpi | 约480dpi |
extra-extra-extra-high | xxxdpi | 约640dpi |
dip
dp
的早期命名,与 dp
完全相同。
sp
缩放无关像素(scale-independent pixel)。sp
和 dp
很类似但区别是,Android 系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时1sp
=1dp
,而当文字尺寸是“大”或“超大”时,1sp
>1dp
。因此sp
主要用于定义字体大小,在用户设置放大字体后,只有用sp为单位的文字被放大。
pt
标准长度单位,1pt
=1/72英寸=0.035厘米。
in
英寸,1英寸=2.54厘米(约)
基本用法
文字尺寸用sp为单位,非文字的尺寸用dp作单位。特殊情况使用px单位,例如定义分隔线时使用宽度为1px
的细线 。