android 适配

代码之道我不知道 2014-03-05

一、Android屏幕适配概念
 
大小:实际大小以屏幕对角线的长度为准 例如:3.4 、 3.8英寸
 
屏幕密度:一块区域又多少个像素,一般用dpi来衡量,安卓中屏幕密度分为4种:low,medium,high,extra high
 

1) 屏幕密度(dpi) :dot per inch,即每英寸像素数。
ldpi(120),mdpi(160),hdpi(240),xhdpi(320)
计算方法:
以480x854,4.0inch手机为例,其对角线为4.0inch,对角线的像素数为:(480^2 + 854^2)开根号 = 979.
所以其dpi = 979 / 4 = 245,约为240
2)屏幕尺寸:对角线长度。有small,normal,large,extra large
 
3)方向:横屏和竖屏
 
4)分辨率:一个物理屏幕上总的像素点数,如480x800等。我们应用中并不使用分辨率这个概念,主要是dpi和尺寸
 
5)dp(density-independent pixel)独立像素单位。一个抽象概念,用来定位UI布局,包括尺寸和位置。


 
二、怎么适配多种屏幕
 
a.在manifest里定义你的程序支持的屏幕类型,需要程序支持什么样的设备就要在这里声明一下,相应代码如下:
<supports-screens android:resizeable=["true"| "false"]
android:smallScreens=["true" | "false"]  //是否支持小屏
android:normalScreens=["true" | "false"]  //是否支持中屏
android:largeScreens=["true" | "false"]  //是否支持大屏
android:xlargeScreens=["true" | "false"]  //是否支持超大屏
android:anyDensity=["true" | "false"]    //是否支持多种不同密度的屏幕
android:requiresSmallestWidthDp=”integer”
android:compatibleWidthLimitDp=”integer”
android:largestWidthLimitDp=”integer”/>
 
b.对不同大小的屏幕提供不同的layout。
 
比如,如果需要对大小为large的屏幕提供支持,需要在res目录下新建一个文件夹layout-large/并提供layout。
 
当然,也可以在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,以适应对横屏竖屏自动切换。

android 适配


c.对不同密度的屏幕提供不同的图片。
应尽量使用点9格式的图片,如需对密度为low的屏幕提供合适的图片,需新建文件夹drawable-ldpi/,并放入合适大小的图片。
 
相应的,medium对应drawable-mdpi
 /,high对应drawable-hdpi/,extra high对应drawable-xhdpi/。
图片大小的确定:low:medium:high:extra high比例为3:4:6:8。举例来说,对于中等密度(medium)的屏幕你的图片像素大小为48×48,
 
那么低密度(low)屏幕的图片大小应为36×36,高(high)的为72×72,extra
 high为96×96。
 
三、多屏幕适配的4条原则
 
a.在layout文件中设置控件尺寸时应采用wrap_content,fill_parent和dp。
 
b.在程序的代码中不要出现具体的像素值。
 
c.不要使用AbsoluteLayout(android1.5已废弃) 。相应地,应使用RelativeLayout。

 
d.对不同的屏幕提供合适大小的图片。
 
四、怎样测试程序是否支持多屏幕适配
 一般使用AVD Manager创建多个不同大小的模拟器,此部分略咯~

相关推荐