Android适配总结

       由于android屏幕各种各样,像素各不相同,sdk不断更新,android开发适配也成了必学的技能之一,根据网上的资料和自己的一些总结,把各种适配再次总结一下供大家批评学习。

(1),横竖屏的适配

        平常我们在做项目的时候,一般公司不做特殊要求的话,我们会把屏幕设置成单一的横屏或竖屏,设置的方法是去AndroidMaifest.xml中把activity中的android:screenOrintation设置成landscape或者portrait,这种单一的屏幕模式。如果设置成"sensor"——有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。的时候有什么需要注意的呢。1,布局问题 2,重新载入问题

1,布局问题
①在res目录先建立layout-land和layout-port目录相应的xml文件名字相同,然后在两个文件夹下创建相同名字的两套xml,模拟器就会根据不同的屏幕来进行自动寻找。
②也可以只在layout中创建xml,通过this.getResources().getConfiguration().orientation来判断当前是横屏还是竖屏,然后在oncreate方法中加载不同的布局

2,重新载入问题。
如果不需要重新载入(重新走一遍activity的生命周期),则在AndroidManifest.xml中activity标签下设置android:configChanges="orientation|keybordHidden",这样的话就不会重复调用activity的生命周期方法,切换时只会调用onConfigChanged(Configuration newconfig)。如果需要重新载入,则不需要添加属性。

(2),屏幕大小的适配和像素适配

       android屏幕花样很多,给开发人员带来的一个问题就是要做各种屏幕的适配。先做一下知识回顾
 ①屏幕尺寸:单位inch,指的是屏幕对角线的长度。
 ②屏幕密度:单位dpi,指的是单位inch上面显示的多少像素px。
 ③屏幕分辨率:单位px*px,指的一屏显示多少像素点。
 ④刻度无关像素:单位sp,指的是自适应字体的像素,用来设置字体。
 可以根据屏幕的尺寸,宽高比,利用勾股定理计算出屏幕的高和宽
 再根据屏幕的分辨率来计算出屏幕竖向和横向的dpi。然后根据自己的dpi去适配不同的drawble
 ldpi(低密度-120dpi)
 dpi(低密度-160dpi)                                  3:4:6:8
 hdpi(低密度-240dpi)
 xdpi(低密度-320dpi)
由于不同的dpi对应的像素中单位换算,对应的换算是1dp = 0.75px,1dp = 1px,1dp = 1.5px,1dp = 2px
如此可知控件使用dp是适应不同像素的原则。

1,适应屏幕大小的适配方法res下建不同的layout

 实现方式: Layout-small/

Layout-normal/

Layout-large/

layout-xlarge/

注释:如果同时要适应横竖屏可以 layout-xlarge-land/layout-xlarge-port

2,适应不同dpi(单位inch下的像素点)
我们创建不同像素大小的图片放在下面的目录下

drawable-hdpi

drawable-ldpi

drawable-mdpi

drawable-xhdpi

3,不同的layout下面,会使用到不同的value值

       根据目前的调查,在市面上的平板,基本上属于mdpi和hdpi的,少数属于tvdpi(如google出的nexus7),所以我们选择这三种密度考虑适配;此外手机应用大多数都是竖屏使用,但平板作为娱乐性的一款产品,横竖屏均有使用的时候,所以我们还需要考虑到屏幕状态进行适配;最后考虑到有的rom会将虚拟键计算到屏幕尺寸里,还要考虑到虚拟键所占用的长宽。

        那么如何根据这三个属性来进行适配呢?Android在资源文件values用文件名的方式提供了限定符可以帮助我们判断上述情况,限定符(mdpi,tvdpi,hdpi)可以帮助我们判断屏幕密度,限定符(land,port)可以帮助我们区分屏幕横竖屏状态,而限定符(1024x600...)可以适配计算虚拟键或者不计算虚拟键的屏幕,限定符的详细说明请参见Android SDK文档中开发者指南的Supporting Multiple Screens话题。

           最终适配文件夹如下图所示:

   

(3),android机型的适配给个连接完事

         http://www.csdn.net/article/2015-09-08/2825645/1

(4),android适配不同的sdk

         永远用最新的sdk,这是google官方给出的建议,你的app能运行的Android版本不是由SDK决定的,是由每一个项目的minSDK决定的。SDK都是向下兼容的。SDK在不断改进中,新的SDK会提供更强大开发工具,而且用4.0的SDK编译的2.1的apk的执行效率会比用2.1的SDK编译的更高。

下面是一些比较详细的解析:
横竖屏:http://blog.csdn.net/jiangxinyu/article/details/8600407
屏幕大小和像素: http://www.cnblogs.com/zealotrouge/archive/2012/11/23/2784774.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值