[Android分享] 徹底理解ldpi、mdpi、hdpi、xhdpi、xxhdpi

來自: http://www.eoeandroid.com/thread-565562-1-1.html?_dsign=42bed080

非常感謝樓主分享

 

這個問題我相信困惑了好多人包括很多老鳥,而且有的人以爲自己理解其實是錯誤的,包括之前的我在內,一般讓美工做720*1280的切圖,就直接放到xhdpi下,如果是做了1080*1920,就直接放到xxhdpi下。其實這四個文件夾和具體的屏幕分辨率是沒直接關係的,上面說的做法也有一定道理,因爲大部分的720*1280的手機都是高密度手機,1080*1920都是超高密度手機,但是這四個文件夾之和屏幕密度有關,和具體分辨率無關。

下面給出一個最最關鍵的等式:
low:medium:high:extra-high:extra-extra-high=3:4:6:8:12

OK,就是說五個文件夾的比例爲3:4:6:8:12。具體是怎麼回事呢?下面分析一下:
比如我用一個480*800的4寸手機,這個手機的屏幕密度按照Google的說法,就屬於密度爲high level的水平(通過分辨率和屏幕尺寸計算密度,然後google自己有一套標準說你位於哪個範圍屬於哪個level的密度水平),然後這個手機的應用在用圖片的時候,就會去hdpi下去找,並且以這個文件夾的圖片爲標準,也就是說比如我的應用去取一張aa.png的圖片,這個圖片的原圖尺寸爲30*30,恰好hdpi下有一張,那這張圖片顯示到屏幕上以後,它的顯示尺寸長寬都爲30px。那問題來了,但如果我的hdpi下沒有這張圖片,而只在xhdpi下有這張圖片,圖片的原圖尺寸是30*30,那請問顯示到屏幕上的圖片的尺寸會是多大呢,還是長寬都爲30px嗎?


答案是否定的,而且現在就用到了上面那個比例,high:extra-high=6:8。先明確這樣一個問題,如果我的屏幕是hdpi的,結果我的圖片是放到了xhdpi下,那系統會把這張圖片進行縮小顯示,也就是說我的xhdpi下放了一張30*30的圖片,那顯示當hdpi屏幕上肯定要比30*30小,這樣才能保證說大小屏幕界面顯示效果是一致的,因爲密度小的手機顯示一張圖片要比密度大的手機顯示同一張圖片的面積要大,要想顯示面積一樣就必須要把圖片搞小點。接上面的問題,

假設顯示在我的hdpi屏幕上的圖片的寬度爲x,那滿足以下等式:
6:8=x:30 。  
可得到x=22.3,向後取整數得23 。

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