Android开发屏幕适配

来源:互联网 发布:战国水晶杯 知乎 编辑:程序博客网 时间:2024/05/16 11:12

为什么要进行屏幕适配?Android系统碎片化严重,物理硬件型号多,屏幕大小分辨率不同,适配为了追求更好的用户体验感。

                                                                                                                        屏幕尺寸信息

1屏幕大小:屏幕对角线的长度,用英寸表示,常用4.75.5

2分辨率:手机屏幕的像素点个数,常用M*N形式表达,即宽有M个像素点,高有N个像素点,主流的分辨率有720*12801080*1920480*800

3 PPI 每英寸像素,又称DPI,对角线的像素点输除以屏幕大小得到

4 px:像素,在UI设计中、AndroidAPIpx作为计量单位,比如获取屏幕宽高

5 sp dp类似,像素无关,设置字体的御用单位,一般推荐设置偶数

 

                                                                                                                          系统屏幕密度

Android系统定义若干标准DPI,作为手机固定的DPI,

密度

ldpi

mdpi

hdpi

xhdpi

xxhdpi

密度值

120

160

240

320

480

分辨率

240*320

320*480

480*800

720*1280

1080*1920

                                                                                                                          适配注意点

独立像素密度dp1dp实际长度1/160inch

Android中以密度值160作为标准,在mdpi中,1dp=1pxhdpi中,1dp=1.5px,同理可以推出各个分辨率直接换算比例:ldpi:mdpi:hdpi:xhdpi:xxhdpi=0.75:1:1.5:2:3

注意:dppxsp之间是可以转化的,具体的转化工具度娘有!!!

总结:dp的存在能让同一数值尺寸在不同分辨率物理设备上显示相同大小(不一定一样大小,但误差可以接受)。那么问题来了?假如手机本身的物理尺寸相差太远,dp就无能为力,就需要新的概念:百分比

其实Android系统中的match_parentlayout_weight就用到百分比的思想。Match_parent占用父容器100%,而layout_weightwrap_content组合使用,神奇的按比例分配空间。百分比在Android中该怎么用呢?

1确定开发的应用支持哪些分辨率

2选择一个合适分辨率作为基准,如用320*480,把屏幕像素宽和高分别分隔成320480份。在基准中每一份代表1px,倘若适配480*800,每一份宽表示1.5px4803201.5倍),同理,即可得到项目支持所有分辨率中的高和宽对应px(通过代码生成,代码度娘有)。

3使用,得到UI妹妹的设计图后,根据设计图尺寸,以某一个分辨率机型基础,找到对应的单位,设置即可。

总结:方案不错,适配准确,但必须包含所有的分辨率,若有分辨率缺少,后果严重。并且使用px作为控件长度单位,违背Android设计原则。使用方便,直接导入相应的架包就可以,维护成本高。

关于Android其他屏幕适配注意点:

1、多使用wrap_contentmatch_parent,它们和屏幕大小、分辨率没有关系。配合layout_weight可灵活按比例分配空间

2、多使用相对布局,禁止绝对布局。相对布局下组件的位置和距离是根据已存在的控件或父控件决定的,屏幕适配性好。

3、使用限定符 App在运行时根据当前设备配置自动选择合适的资源,如根据屏幕尺寸选择相应的布局。res/layout/main.xml这是正常布局,res/layout-large/main.xml,这是在平板大屏幕中使用。同样,在3.2版本中引入的最小宽度限定符一样,rea/layout-sw600dp/main.xml,在屏幕宽度大于等于600dp中采用的布局,当然,除了大小,还有屏幕的方向限定符合,更多参照官方文档

文中部分参考Android群英传和CSDNBuaaroid大神的博客。有什么错误的地方,欢迎大神拍砖。

 

 

 

 

 

1 0