Android不同分辨率圖片實際顯示大小的計算

 由於市場上Android手機種類繁多,Android應用多分辨率適配工作必不可少。

一般來說,屏幕分配分爲,屏幕尺寸,屏幕方向,屏幕像素密度。

(1)屏幕尺寸

屏幕尺寸是根據屏幕大小進行匹配,例如small,normal,large,xlarge等等這一類匹配目前已經很少使用。

(2)屏幕方向

屏幕方向分爲port豎屏和land橫屏兩種,通常開發時如果支持橫屏顯示,都會另寫一套橫向的佈局文件。

(3)屏幕像素密度

屏幕像素密度指單位長度屏幕顯示的像素,即常說的dpi(dots per inch),每英寸點數。密度越高顯示畫面就越清晰。

Android根據像素密度按區間範圍分成幾種:

 

密度區間 ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi
dpi 120 160 240 320 480 640
1dp對應像素數 0.75 1.0 1.5 2.0 3.0 4.0

 

當新建一個Android工程時,在res目錄下可以看到drawable-xxx目錄,就是對應不同像素密度的資源。系統會優先從該目錄中尋找圖片,如果找不到會從其他目錄尋找。因此對應不同密度設備,我們需要爲其準備不同畫質的圖片,以便獲得更好的效果。

 

Android將mdpi像素作爲基準線進行匹配,dp與px的換算關係如下,


px= dp * (dpi / 160 )


官方建議使用dp作爲佈局單位,這樣不同的dpi設備上,換算出來的px也會相應的自適應。

爲了更清楚地看清不同dpi機型上的px的換算規律,做了以下實驗。

 

測試機型:

(1)   320dpi機型 A

(2)   160dpi機型 B

測試圖片:

一張48×48的圖片分別存放在drawable,drawable-mdpi,drawable-hdpi目錄下,圖片名稱分別爲

test1.png,test2.png,test3.png。


實驗結果:

機型A上面顯示效果,

test1.png 顯示大小爲 96×96像素

test2.png 顯示大小爲 96×96像素

test3.png 顯示大小爲 64×64像素

機型B上面顯示效果,

test1.png 顯示大小爲 48×48像素

test2.png 顯示大小爲 48×48像素

test3.png 顯示大小爲 32×32像素


實驗結論:

通過如上實驗,我們知道一張圖片實際顯示大小與機型dpi和drawable文件夾dpi均相關。

 

手機顯示像素 =  圖片實際像素尺寸 × 機型DPI / 所在資源目錄DPI


例如,在320dpi的機型上,將48×48像素的圖片放入drawable-hdpi目錄,該圖片實際顯示像素 = 48* 320/ 240 = 64像素。

所以爲了獲得更好的顯示效果,每種dpi分辨率的機型,均需要搭配一張對應尺寸圖片,以防止被縮小或者拉大。

 

 


發佈了25 篇原創文章 · 獲贊 14 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章