引言:在Android碎片化日益严重的今天,如何适配各种手机的屏幕,似乎成了一个令人头疼的问题?
dip (dp) 设备独立像素
px (pixels) 像素
sp (scaled pixels) 字体像素, 当你在系统设置里调节字号大小时,应用中的文字也会随之变大变小。
in 英寸 1 in = 2.54 cm
pt 印刷标准长度 1pt= 1/72英寸
dpi 每英寸像素密度
在160dpi像素密度下:px=dp
density 密度,dp到px的变换系数
需要根据dpi值准备5套图片资源:
drawable:主要放置xml配置文件或者对分辨率要求较低的图片
drawalbe-ldpi:低分辨率的图片,如QVGA (240x320)
drawable-mdpi:中等分辨率的图片,如HVGA (320x480)
drawable-hdpi:高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
drawable-xhdpi:至少960dp x 720dp
Android有个自动匹配机制去选择对应的布局和图片资源。
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。
在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。
一般情况下,
240×320的屏幕是低密度120dpi,即ldpi;
320×480的屏幕是中密度160dpi,即mdpi;
480×800的屏幕是高密度240dpi,即hdpi;
720×1280的屏幕是超高密度320dpi,即xhdpi;
1080×1920的屏幕是超超高密度480dpi,即xxhdpi。
ldpi:mdpi:hdpi:xhdpi:xxhdpi=3:4:6:8:12
由于不同的手机或平板有不同的像素密度,而开发人员不可能为每款不同像素密度的手机开发相同的应用,因此Android想到了这点,Android系统本身定义了六种像素密度:
低(120dpi)、中(160dpi)、高(240dpi)、超高(320dpi)、超超高(480dpi)
由于在160dpi像素密度的情况下:px = dp,当在其他像素密度时,pxe和dp的换算规则是:dp=(int)(px/1.5+0.5)
因为,在低、中、高、超高、超超高像素密度下,dp到px的换算系数分别为:
低(0.75)、中(1)、高(1.5)、超高(2)、超超高(3)