Android布局layout如何适应不同的分辨率和不同大小的屏幕

安卓手机品种繁多,这就造成了屏幕大小的不一,为app开发带来了一些困扰。屏幕自适应自然成了安卓开发要解决的问题。我在网上收罗了一下,找的一些知识点如下:

1.      为不同的屏幕准备不同的layout文件

安卓手机屏幕大小通常有480*320,640*360,800*480等,那我们就可以在res目录下创建不同的layout文件夹,如layout-480x360,layout-640x360,layout-800x480等。同时需要注意的是原有的layout文件夹不能够删掉,否则会报错,并且命名文件夹时大数字要写在小数字前面。所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。

2.      放置三个不同的图片文件夹

Res文件夹下有三个文件夹drawable- hdpi、drawable- mdpi、drawable-ldpi

drawable- hdpi、drawable-mdpi、drawable-ldpi的区别:

  (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)

  (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)

  (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)

  系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。

在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。

3.      横竖屏的切换

如果要在转动手机时,仍然保持画面不转动,可以对Activity设置如下的属性android:screenOrientation="landscape"(landscape是横向,portrait是纵向)

Android在每次切换横竖屏的时候都会重启Activity所以应该在Activity销毁前保存当前活动的状态,再次onCreate的时候再进行载入。

如果想在切换横竖屏时不进入OnCreate方法,那么可以设置activity的android:configChanges="orientation|keyboardHidden"属性

通过查阅Android API可以得知android:onConfigurationChanged实际对应的是Activity里的onConfigurationChanged()方法。在AndroidManifest.xml中添加上诉代码的含义是表示在改变屏幕方向、弹出软件盘和隐藏软键盘时,不再去执行onCreate()方法,而是直接执行onConfigurationChanged()。如果不申明此段代码,按照Activity的生命周期,都会去执行一次onCreate()方法,而onCreate()方法通常会在显示之前做一些初始化工作。所以如果改变屏幕方向这样的操作都去执行onCreate()方法,就有可能造成重复的初始化,降低程序效率是必然的了,而且更有可能因为重复的初始化而导致数据的丢失。这是需要千万避免的。

 

参考:

分辨率和屏幕大小涉及到的一些概念:http://baike.baidu.com/view/3892167.htm

横竖屏切换:http://www.th7.cn/Program/Android/201303/127748.shtml

http://www.cnblogs.com/wisekingokok/archive/2011/10/06/2199948.html

http://www.apkbus.com/android-83483-1-1.html

http://blog.csdn.net/chenlei1889/article/details/6291282

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值