一、支持各种屏幕尺寸
1、使用wrap_content、match_parent、weight
Weight计算出的宽度= 控件原来宽度+剩余空间所占百分比的宽度
假设屏幕宽度为 L
Button1 2/3L = L +(L-2L)*1/3 = L-1/3L=2/3L
Button2 1/3L = L+(L-2L)*2/3 = L-2/3L= 1/3L
假设两个 button width 等于0dp,则Button1 1/3L = 0 +L*1/3 = 1/3L ;Button2 = 2/3L = 0 +L*2/3 = 2/3L
2、使用相对布局,禁用绝对布局
3、使用限定符
尺寸限定符(android 3.2及之前),如res/layout-large/main.xml,res/layout/main.xml。
最小宽度限定符(android 3.2之后),res/layout-sw600dp/main.xml,res/layout/main.xml。
方向限定符,res/values-sw600dp-port/layouts.xml,res/values-sw600dp-land/layouts.xml
4、使用自动拉伸位图,可以根据控件大小自动拉伸
左上:拉伸区域;右下:间隔区域
二、支持各种屏幕密度
1、使用密度非制约像素 ,解决宽度不一致问题
2、提供备用位图,否则会造成内存占用问题:图片如分辨率不匹配会造成内存猛增
三、实施自适应用户界面流程
1、确定当前布局
2、根据当前布局做出响应
3、重复使用其他活动中的片段
4、处理屏幕配置变化
四、最佳实践
1、针对不同屏幕尺寸设计高清图片
2、代码动态设置尺寸
閱讀更多 潘江 的文章