1、布局配置文件XML中的宽与高应该使用wrap_content和match_parent(或fill_parent略有不同)来适配不同设备分辨率的需求,尽量不要使用pixel将大小写死。
2、尽量使用相对布局(RelativeLayout)来搭建显示界面,因为这种布局方式能很好的处理和解决不同屏幕大小下各个组件之间的关系,一般我们会将布局的最外层使用相对布局,在里面使用其他的布局和组件。
3、一般情况下,为了解决适配的问题,我们需要使用Android自带的工具draw9patch来处理拉伸的图片。一般处理的图片为按钮、较小的图片或是颜色单一的图片,让图片在拉伸的时候不至于是真,严重影响用户体验,处理过的图片的各位为.9.png,Android会自行加载和拉伸显示图片。
4、使用设备独立像素dp和sp。当我们要设定组件的大小的时候(固定大小),对于非字体的我们最好使用dp,因为它是设备的物理实际大小,对于不同的设备来说没有太大的差别;而sp也是这样的一个用来修饰字体大小的独立单位。
5、提供不同的图片的大小,我们知道Android提供了几个等级的分辨率图片目录:
· xhdpi: 2.0
· hdpi: 1.5
· mdpi: 1.0 (baseline)
· ldpi: 0.75
意思就是如果我们为xhdpi的设备提供了一个大小为200x200的图片,那么对应的也要为hdpi提供150x150的同样的图片,以此类推,mdpi---100x100 ldpi---75x75(可忽略)。
res/
drawable-xhdpi/
Awesomeimage.png ---200x200
drawable-hdpi/
Awesomeimage.png ---150x150
drawable-mdpi/
Awesomeimage.png ---100x100
drawable-ldpi/
Awesomeimage.png ---75x75(忽略)
6、不要使用绝对布局(AbsoluteLayout),因为这个布局根本不能满足适配不同分辨率,现在已经被和谐掉,不在使用。
为了适配不同的设备的分辨率,我们会针对不同设备创建不同的layouts和bitmaps,例如:res/drawable-mdpi/icon.png //for medium-density screens
res/drawable-hdpi/icon.png //for high-density screens
7、在某些特殊情况下,我们不想对某些图片做缩放操作的时候,我们会将图片存放在nodpi目录中,例如:
res/drawable-nodpi/icon.png
8、对于应用程序(非3D游戏或可以在虚拟机上跑的),我们在开发的时候,可以使用不同的虚拟机(设定虚拟机的大小和density)来测试适配不同设备的需求。
9、对于适配大屏幕设备,比如平板电脑的话,我们需要为相应设备提供图片的目录,例如:同样布局文件也一个与之相对应才能正常显示。
10、对于背景图片尽量不要使用大图,因为打包时会占据较大的空间,降低用户的下载量。
11、如果想要灵活的改变视图效果,当然主要针对android3.0以上的才支持的fragment,其就相当于一个内嵌入到activity视图的组件,其也有自己的生命周期,与所在的activity紧密联系,这有个不错的文档介绍了fragment的相关内容:http://blog.csdn.net/xyz_lmn/article/details/6927390
12、在布局文件中,我们尽量使用百分比,如果在线性布局中可以使用layout_weight权重值。
13、如果我们需要在App中使用Web页面的时候,我们一定会使用WebView插件来加载和浏览页面。为了能适配不同设备大小的问题,我们除了要在代码中设定一些WebView的属性之外,还需要在加载的的Web页面中添加相关的配置,具体如下:
Web页面编码的设置格式:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">
使用viewport视口属性适配不同分辨率:
例如:<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
更多的内容可以参看谷歌提供的官方文档:http://developer.android.com/guide/webapps/targeting.html
好文章分享:http://blog.csdn.net/jiangxinyu/article/details/8598046
技术交流群:179914858