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

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

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

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

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

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

  < supports-screens spa

  android:smallScreens="true" 設計

  android:normalScreens="true" orm

  android:largeScreens="true" xml

  android:xlargeScreens="true" blog

  android:anyDensity="true" /> 圖片

  若是沒有這幾行代碼,無論你怎麼調整layout中的控件,對應分辨率的手機是沒有任何效果的。注意:因爲android版本的不一樣,有些版本不支持xlargeScreens,能夠直接將android:xlargeScreens="true"去掉。

因爲同一個UI元素(如100 x100像素的圖片)在高精度的屏幕上要比低精度的屏幕上看起來要小,爲了讓這兩個屏幕上的圖片看起來效果差很少,能夠採用如下兩種方法:


程 序將圖片進行縮放,可是效果較差。
爲這兩個精度屏幕的手機各提供一個圖片。

可是屏幕的參數多樣化,爲每個精度的屏幕都設計一套icon,工做量大而且不能知足程序的兼容 性要求,勢必要對屏幕的分級,如在160dpi和 180dpi的手機屏幕上採用同一套icon,當這套icon在240dpi效果知足不了設計要求,就須要另作一套稍大些的icon。


三 種尺寸:大,中,小。
三種精度:高(hdpi),中(mdpi)和低(ldpi)。

程序能夠爲這三種尺寸的屏幕提供默認資源,若有須要,還能夠爲各類精度 的屏幕提供資源。在運行時,系統會根據屏幕布局加載正確尺寸或者精度的圖片。

android 
屏幕分辨率問題(轉載) - 雲端漫步 - 心路歷程

Android的icon尺寸

在運行時,程序爲最佳顯示效果提供了三種方法:

1.圖片縮放

基於當前屏幕的 精度,平臺自動加載任何未經縮放的限定尺寸和精度的圖片。若是圖片不匹配,平臺會加載默認資源而且在放大或者縮小以後能夠知足當前界面的顯示要求。例如, 當前爲高精度屏幕,平臺會加載高精度資源(如圖片),若是沒有,平臺會將中精度資源縮放至高精度。

2.自動定義像素尺寸和位置

若是程序不支持多種精度屏幕,平臺會自動 定義像素絕對位置和尺寸值等,這樣就能保證元素能和精度160的屏幕上同樣能顯示出一樣尺寸的效果。例如,要讓WVGA高精度屏幕和傳統的HVGA 屏 幕同樣顯示一樣尺寸的圖片,當程序不支持時,系統會對程序慌稱屏幕分辨率爲320×533,在(10,10)到(100,100)的區域內繪製圖形完成之 後,系統會將圖形放大到(15,15)到(150,150)的屏幕顯示區域。

3.兼 容更大尺寸的屏幕

當前屏幕超過程序所支持屏幕的上限時,定義supports- screens元素,這樣超出顯示的基準線時,平臺在此顯示黑色的背景圖。例如,WVGA 中精度屏幕上,如程序不支持這樣的大屏幕,系統會謊 稱是一個320×480的,多餘的顯示區域會被填充成黑色。

但爲了達到最佳的顯示效 果,最好的方法仍是設計多套圖片。那就有必要對於全部的屏幕依據精度值進行分級(高中低),以後再設計三套icon:


先爲主流的中精度屏 幕(HVGA)設計一套icon,肯定圖片的像素尺寸。
爲高精度屏幕將圖片放大到150%,爲低精度屏幕將圖片縮小至75%。
將這三套資 源放置到程序的三個文件夾下 :res/drawable-mdpi/ 、res/drawable-hdpi/、 res/drawable- ldpi/。程序在運行時,平臺會根據屏幕的精度調取合適的icon。
相關文章
相關標籤/搜索