一、几个概念
1、ppi-pixel per inch,单位长度像素个数。计算方法是宽*宽 + 长*长,然后开方(即对角线的像素个数),然后除以对角线的长度。
例如iphone4s:960x640像素,对角线3.5英寸,则ppi=(960*960 +640*640)/ 3.5 = 329.6ppi
2、dpi-dolt per inch,单位长度像素点数,感觉和ppi定义类似,其计算方法也一样,可以粗略理解为两者一样,只不过这里一个点代表一个像素。
3、dip - density-independent pixel:密度无关像素,其实并不是像素,与pixel有如下转换关系:
px = dp * (dip / 160); (之所以要除以160,是因为定义对于dip为160的屏幕,其一个像素与一个dp相同)
4、屏幕大小(Screen Size):屏幕的实际尺寸,指屏幕对角线的长度,单位inch,android中根据屏幕大小,把屏幕氛围几个等级:small、normal、large、extra-large
5、屏幕密度(Screen density):用dpi来表示,android把屏幕密度分为:low、medium, high、extra high
6、sp(scaled-independent pixel):可以把它理解为dip(或dp),只不过专门用来表示字符大小
可以看到,屏幕的密度和屏幕的大小以及屏幕种类(QVGA、HVGA等)息息相关。
二、多屏幕适配的原则
1、在属性中尽量不要定死图像的宽和高,尽量用fillpararent、wrapcontent,对于部分布局的宽高可以用dp来表示
2、应用icon等图标应该准备多个分辨率的图片(为了避免系统缩放造成视觉上不清晰)。其中,对于不同密度的使手机图片尺寸比例为3:4:6:8
3、严禁使用pixel值
三、多屏幕适配的问题
1、对于ldpi、mdpi和hdpi的手机,其布局大小很好适配,用dp即可。因为其大小是成比例的:例如
对QVGA(240x320)的ldpi屏幕,一般大小为3.0inch,这样dpi约为120,屏幕的宽度用dp表示为240 / (120 /160) = 320dp;
对WGVA(480x800)的hdpi屏幕,一般大小为4.0inch,这样dpi约为240屏幕的宽度用dp表示为480 / (240 / 160) = 320dp ;
对市面上常见的旗舰机,大多是720x1280尺寸的,一般大小为4.5寸,这样起dpi为326, 这样起屏幕宽度为 720 / (326 /160) = 360dp;
可以看到队友ldpi、hdpi和mdpi来说,满屏幕都是320dp,这样如果在layout设置一个宽度为320dp,则可以充满屏幕,但是在xhdpi手机中,却无法充满整个手机。
2、对于切图的适配最好用hdpi的切图,如果用xhdpi的切图可能有问题,具体问题原因待续。。。