整理自:
http://www.open-open.com/lib/view/open1461807175717.html
首先先明確我們的手機(jī)是屬于mdpi谴轮、hdpi中的哪一檔,這個(gè)需要知道我們手機(jī)的dpi
網(wǎng)上找了一個(gè)現(xiàn)在主流手機(jī)的對(duì)應(yīng)關(guān)系吹埠,我們可以發(fā)現(xiàn)我們現(xiàn)在主要需要適配的是xhdpi和xxhdpi這2套第步!
像素 | ?密度 |
---|---|
HVGA | mdpi |
WVGA | hdpi |
FWVGA | hdpi |
QHD | hdpi |
720P(1280*720) | xhdpi |
1080P(1920*1080) | xxhdpi |
谷歌對(duì)于每種密度下的icon應(yīng)該設(shè)計(jì)成什么尺寸其實(shí)Android也是給出了最佳建議:
密度 | 建議尺寸 |
---|---|
mipmap-mdpi | 48 * 48 |
mipmap-hdpi | 72 * 72 |
mipmap-xhdpi | 96 * 96 |
mipmap-xxhdpi | 144 * 144 |
mipmap-xxxhdpi | 192 * 192 |
但是往往我們拿到的UI設(shè)計(jì)資源常常只有一個(gè)固定分辨率,那么我們應(yīng)該把它放到哪里呢缘琅?
這里先要說(shuō)一下谷歌選擇圖片的規(guī)則:
首先解釋一下圖片為什么會(huì)被放大粘都,當(dāng)我們使用資源id來(lái)去引用一張圖片時(shí),Android會(huì)使用一些規(guī)則來(lái)去幫我們匹配最適合的圖片刷袍。什么叫最適合的圖片翩隧?
比如我的手機(jī)屏幕密度是xxhdpi,那么drawable-xxhdpi文件夾下的圖片就是最適合的圖片呻纹。因此堆生,當(dāng)我引用android_logo這張圖時(shí),如果drawable-xxhdpi文件夾下有這張圖就會(huì)優(yōu)先被使用雷酪,在這種情況下淑仆,圖片是不會(huì)被縮放的。但是哥力,如果drawable-xxhdpi文件夾下沒(méi)有這張圖時(shí)蔗怠, 系統(tǒng)就會(huì)自動(dòng)去其它文件夾下找這張圖了墩弯,優(yōu)先會(huì)去更高密度的文件夾下找這張圖片,我們當(dāng)前的場(chǎng)景就是drawable-xxxhdpi文件夾寞射,然后發(fā)現(xiàn)這里也沒(méi)有android_logo這張圖渔工,接下來(lái)會(huì)嘗試再找更高密度的文件夾,發(fā)現(xiàn)沒(méi)有更高密度的了桥温,這個(gè)時(shí)候會(huì)去drawable-nodpi文件夾找這張圖引矩,發(fā)現(xiàn)也沒(méi)有,那么就會(huì)去更低密度的文件夾下面找策治,依次是drawable-xhdpi -> drawable-hdpi -> drawable-mdpi -> drawable-ldpi脓魏。
總體匹配規(guī)則就是這樣,那么比如說(shuō)現(xiàn)在終于在drawable-mdpi文件夾下面找到android_logo這張圖了通惫,但是系統(tǒng)會(huì)認(rèn)為你這張圖是專門(mén)為低密度的設(shè)備所設(shè)計(jì)的茂翔,如果直接將這張圖在當(dāng)前的高密度設(shè)備上使用就有可能會(huì)出現(xiàn)像素過(guò)低的情況,于是系統(tǒng)自動(dòng)幫我們做了這樣一個(gè)放大操作履腋。 那么同樣的道理珊燎,如果系統(tǒng)是在drawable-xxxhdpi文件夾下面找到這張圖的話,它會(huì)認(rèn)為這張圖是為更高密度的設(shè)備所設(shè)計(jì)的遵湖,如果直接將這張圖在當(dāng)前設(shè)備上使用就有可能會(huì)出現(xiàn)像素過(guò)高的情況悔政,于是會(huì)自動(dòng)幫我們做一個(gè)縮小的操作。所以延旧,我們可以嘗試將android_logo這張圖移動(dòng)到drawable-xxxhdpi文件夾下面將會(huì)得到這樣的結(jié)果:
Paste_Image.png
總結(jié)一下就是:低密度放大失真谋国,高密度縮小省資源(但也不是越大越好)
回到最初的問(wèn)題,只能設(shè)計(jì)一套UI資源迁沫,要為哪個(gè)分辨率設(shè)計(jì)呢芦瘾?
答案是drawable-xxhdpi,那么有的朋友可能會(huì)問(wèn)了集畅,不是還有更高密度的drawable-xxxhdpi嗎近弟?干嗎不放在這里?這是因?yàn)橥χ牵忻嫔?80dpi到640dpi的設(shè)備實(shí)在是太少了祷愉,如果針對(duì)這種級(jí)別的屏幕密度來(lái)設(shè)計(jì)圖片,圖片在不縮放的情況下本身就已經(jīng)很大了赦颇,基本也起不到節(jié)省內(nèi)存開(kāi)支的作用了二鳄。
這里附上谷歌的建議(不過(guò)參考意義不大我覺(jué)得,有上面的那個(gè)對(duì)應(yīng)關(guān)系就夠了):
|dpi范圍 |?密度|
| :-------------: | :-------------: |
|0dpi ~ 120dpi| ldpi|
|120dpi ~ 160dpi| mdpi|
|160dpi ~ 240dpi| hdpi|
|240dpi ~ 320dpi| xhdpi|
|320dpi ~ 480dpi| xxhdpi|
|480dpi ~ 640dpi| xxxhdpi|