Android 適配(drawable檔案夾)圖片適配(二)

來源:互聯網
上載者:User

標籤:oid   ima   justify   fan   col   float   解析度   pre   dpi   

參考自(54090891)

 

Android資源檔存放:

           android的drawable檔案一共可以有:

           drawable-ldpi(低密度)               drawable-mdpi(中等密度)              drawable-hdpi(高密度)         drawable-xhdpi(超高密度)    

           drawable-xxhdpi(超超高密度)     drawable-xxxhdpi(超超超高密度)     drawable-nohdpi(無縮放)     當然還加上預設的drawable

 

    ----------以下是重點理解內容,一定要看懂----------

 

比如在一個中等解析度的手機上,Android就會選擇drawable-mdpi檔案夾下的圖片,檔案夾下有這張圖就會優先被使用,在這種情況下,圖片是不會被縮放的;

但是如果沒有在drawable-mdpi的檔案夾下找到相應圖片的話,Android系統會首先從更高一級的drawable-hdpi檔案夾中尋找,如果找到圖片資源就進行縮放處理,顯示在螢幕上;

如果drawable-hdpi檔案夾下也沒有的話,就依次往drawable-xhdpi檔案夾、drawable-xxhdpi檔案夾、drawable-xxxhdpi檔案夾、drawable-nodpi;

如果更高密度的檔案夾裡都沒有找到,就往更低密度的檔案夾裡尋找,drawable-ldpi檔案夾下尋找;

如果都沒找到,最終會在預設的drawable檔案夾中尋找,如果預設的drawable檔案夾中也沒有那就會報錯啦。(前提是把一張圖片做成很多不同的解析度放在各個對應密度的drawable檔案夾下)

舉個例子,假如當前裝置的dpi是320,系統會優先去drawable-xhdpi目錄尋找,如果找不到,會依次尋找xxhdpi → xxxhdpi → hdpi → mdpi → ldpi。對於不存在的drawable-[density]目錄直接跳過,中間任一目錄尋找到資源,則停止本次尋找。

 

如何知道自己裝置的dpi:

float xdpi = getResources().getDisplayMetrics().xdpi;float ydpi = getResources().getDisplayMetrics().ydpi;

 

知道裝置的dpi後就知道裝置首先會在哪個drawable檔案夾下去尋找了:dpi範圍密度對應範圍

 

 裝置密度 適配資源檔密度
0dpi ~ 120dpi ldpi
120dpi ~ 160dpi mdpi
160dpi ~ 240dpi hdpi
240dpi ~ 320dpi xhdpi
320dpi ~ 480dpi xxhdpi
480dpi ~ 640dpi xxxhdpi

 

對於每種密度下的icon應該設計成什麼尺寸其實Android也是給出了最佳建議,建議尺寸如下表所示:

資源檔密度  建議尺寸
mipmap-mdpi 48 * 48(博主實測表徵圖16就夠了)
mipmap-hdpi 72 * 72(博主實測表徵圖32就夠了)
mipmap-xhdpi 96 * 96(博主實測表徵圖48就夠了)
mipmap-xxhdpi 144 * 144(博主實測表徵圖64就夠了)
mipmap-xxxhdpi 192 * 192(博主實測表徵圖72就夠了)

 

總體匹配規則就是這樣:

如果圖片所在目錄dpi低於匹配目錄,那麼該圖片被認為是為低密度裝置需要的,現在要顯示在高密度裝置上,圖片會被放大。

如果圖片所在目錄dpi高於匹配目錄,那麼該圖片被認為是為高密度裝置需要的,現在要顯示在低密度裝置上,圖片會被縮小。

如果圖片所在目錄為drawable-nodpi,則無論裝置dpi為多少,保留原圖片大小,不進行縮放。

 

六種通用密度

 

Android系統為了簡化開發人員為多種螢幕設計使用者介面的方式,Android將實際螢幕尺寸和範圍作了通用規定,稱作“根據可用螢幕寬度管理螢幕尺寸的新技術”。六種通用密度為

密度 dpi範圍
ldpi(低) ~120dpi
mdpi(中) ~160dpi
hdpi(高) ~240dpi
xhdpi(超高) ~320dpi
xxhdpi(超超高) ~480dpi
xxxhdpi(超超超高) ~640dpi

通用密度是以mdpi(中)為基準配置的,此基準基於第一代Android裝置(T-Mobile G1)的螢幕配置。

 

那麼六種通用密度下的縮放倍數是多少呢?以mdpi為基準,各密度目錄下的放大倍數(即縮放因子density)如下

密度 放大倍數
ldpi 0.75
mdpi 1.0
hdpi 1.5
xhdpi 2.0
xxhdpi 3.0
xxxhdpi 4.0

例如,當前裝置的dpi是480(即xxhdpi),那麼對於存放於mdpi目錄中的圖片會被放大三倍。對於很多裝置,其dpi並不剛好是六種通用密度最大dpi,這種情況下,圖片的縮放倍數如何計算呢?

稍微思考一下,我們就可以得到通用的縮放倍數(縮放因子)計算方法:對於任意裝置,各drawable-[density]目錄下的圖片放大倍數的計算公式

那麼,圖片的實現顯示尺寸通過圖片尺寸乘以縮放倍數就可以得到了。

 

Android 適配(drawable檔案夾)圖片適配(二)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.