相关计量单位介绍:
px:是屏幕的像素点,不同设备显示的效果一样。
in:英寸(1英寸等于2.54cm)
mm:毫米
pt:磅, 1/72英寸
dp:device independent pixels(设备独立像素),不同设备有不同的显示效果。这个和设备
硬件有关。
基于density的抽象单位,假设一个160dpi的屏幕,1dp=1px。(160dpi表示1英寸
有160个像素点)
dip:等同于dp。因此我们在xml中使用dp和dip效果一样。
sp:scaled pixels。 同dp相似,但还会依据用户的字体大小偏好缩放。
dpi:dots per inch,每英寸的像素数。
density:通常我们在Android平台提到的这个不是屏幕密度,而是每英寸的像素点与160dpi
(google设置的一个标准)的比值。
densityDpi的值表示每英寸有多少个像素点,单位是dpi。
dip与px的关系:
QVGA densityDpi = 120Density
= 0.75 1dp = 0.75px ldpi
HVGA
densityDpi = 160 Density = 1 1dp = 1px
mdpi
VGA
densityDpi = 160Density = 1
1dp = 1px mdpi
WVGA
densityDpi = 240Density = 1.5
1dp = 1.5p xhdpi
WQVGA densityDpi = 320
Density = 2 1dp = 2px
xhdpi
资源目录匹配:
Android默认是使用density来匹配资源的:
当屏幕 density = 2时,使用drawable-xhdpi目录下的资源
当屏幕 density = 1.5时。使用drawble-hdpi目录下的资源
当屏幕 density = 1时。使用drawble-mdpi目录下的资源
当屏幕 density = 0.75时,使用drawable-ldpi目录下的资源。
(尽管Android设备的屏幕像素密度遵循0.75:1.0:1.5:2.0的比例,但市面上有一部分的设备不全然
符合上面的四种情况,有可能介于2者之间:如1.33。这时能够使用drawable-tvdpi目录下的资源。)