Android屏幕适配总结

一、几个概念

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的切图可能有问题,具体问题原因待续。。。







你可能感兴趣的:(Android屏幕适配总结)