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

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