android中不同手機分辨率適配問題

    在項目開發的過程中,同一個佈局對應不同的手機會顯示出不同的效果。導致這個現象產生的原因是不同手機的分辨率不同。在android sdk提供的幫助文檔中,我們可以看到各種手機的分辨率和對應的屏大小。QVGA (240x320),WQVGA400(240x400),WQVGA432 (240x432),HVGA (320x480),WVGA800 (480x800),WVGA854 (480x854)。

    目前android手機的分辨率大致就是幫助文檔中描述的幾種,我們可以用兩種方式進行不同手機的適配。一種是在java代碼中,另外一種是在xml文件中。具體使用哪種方式更有效更合適,要看具體的情況而定。

   在以前的項目中,我之前做過關於歷史聊天記錄,每頁顯示條數的匹配。不同的手機,每頁可以顯示歷史記錄的條數是不同的。我採用的是在java代碼中做匹配。不同分辨率的手機,他們都有固定的屏高。例如,480x800,屏高是800,240x320,屏高是320。根據屏高爲判定條件,爲每一頁顯示歷史記錄的條數做一個限制。我個人覺得,在java代碼中做手機匹配,要看匹配的佈局中,控件是否太多,不太多,可以在java代碼中根據不同的情況修改,否則,java代碼將會顯得很冗長,修改起來也很麻煩。

    在xml進行手機匹配,主要是針對佈局中控件太多,不方便在java代碼中修改的情況。在xml中解決不匹配問題很簡單,對於不同手機的分辨率,建立對應的layout文件即可。例如:480x800,之間建立layout-800x400,240x320,建立layout-320x240。特別注意:大的寫在前面,例如800,320,小的寫在後面,例如480,240。建立了相應的layout後,還要在不同的手機上調整佈局中的控件大小和位置。

    在本次項目中,我負責不同手機視圖的匹配問題,我選擇的是xml匹配方式,結果發現按上面的方式做了之後,對應分辨率的手機的顯示沒有任何的效果,後來,我查看幫助文檔後,發現必須要在androidmainfest中進行如下代碼的配置:

<supports-screens
        android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true"
        android:anyDensity="true" />
如果沒有這幾行代碼,不管你怎麼調整layout中的控件,對應分辨率的手機是沒有任何效果的。注意:由於android版本的不同,有些版本不支持xlargeScreens,可以直接將android:xlargeScreens="true"去掉。

   

 

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