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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章