2013-04-07 55 views
3

我已完成我的應用程序的編碼,並且正在運行Lint以確保解決所有性能問題。圖像的密度無關(下降)大小差異顯着

我爲ldpi,mdpi,hdpi創建了圖形& xhdpi;但皮棉告訴我什麼是錯的:

The image btn_homepage_journal.png varies significantly in its density-independent (dip) size across the various density versions: 
drawable-xhdpi\btn_homepage_journal.png: 93x75 dp (186x149 px), 
drawable-hdpi\btn_homepage_journal.png: 76x61 dp (114x92 px), 
drawable-mdpi\btn_homepage_journal.png: 61x49 dp (61x49 px), 
drawable-ldpi\btn_homepage_journal.png: 48x48 dp (36x36 px) 

我MDPI測試設備是銀河王牌,我的xhdpi測試設備是銀河S3和圖形看起來正常。

我不明白這個警告是想告訴我什麼:對於我的xhdpi圖像的186x149像素(這完全符合我的xhdpi佈局),什麼是93x75 dp指的是什麼?

下面是我使用的每一個DPI文件夾中的圖片:

ldpi mdpi hdpi xhdpi

回答

5

Lint是顯示你的密度獨立大小會爲每個圖像,或基本上如果mdpi的大小不得不爲你改變大小的話。它預期的相對大小將爲: xhdpi:200% hdpi:150% mdpi:100% ldpi; 75% 因此,如果你的mdpi圖像是61x49,那麼你的ldpi會達到75%,即46x37。 也,它會希望你的xhdpi是122x98,而不是你有的186x149。

因此,看看每個數字集 - 左側基本上指示圖像看起來像什麼大小,如果它被調整爲mdpi顯示。 因此理論上這應該是真實的:

xhdpi * 0.5 = =華電國際* 0.667 == == MDPI LDPI * 1.33

在實踐中,你可以把它任何你想要的方式,但它會很艱難爲您的佈局相互對應。

+0

感謝;我現在明白了。但是,通過眼睛,我的xhdpi圖形應該是186x149 - 它看起來很蠢,爲122x98。那麼我應該忽略這個Lint建議嗎? – DaveSav 2013-04-07 00:45:52

+0

我肯定會忽略它。無論如何,這只是對尺碼的一個建議。 – HalR 2013-04-07 01:04:21

+0

隨着S3,看看這個(以防萬一你沒有使用該方案):http://stackoverflow.com/questions/11699761/android-s3-layout-vs-galaxy-nexus-layout/12557007#12557007 – 2013-04-07 01:18:35

2

有時代碼勝於雄辯:

public static void logGfxVarioFromXXHDPI(final int height, final int width) { 
    RapidLog.i("GFX","xxxhdpi: (" + (int)(height * (4/3.0)) + "x" + (int)(width * (4/3.0)) + ")"); 
    RapidLog.i("GFX","xxhdpi: (" + (height) + "x" + (width) + ")"); 
    RapidLog.i("GFX","xhdpi: (" + (int)(height * (2/3.0)) + "x" + (int)(width * (2/3.0)) + ")"); 
    RapidLog.i("GFX","hdpi: (" + (int)(height * 0.5) + "x" + (int)(width * 0.5) + ")"); 
    RapidLog.i("GFX","mdpi: (" + (int)(height * (1/3.0)) + "x" + (int)(width * (1/3.0)) + ")"); 
    RapidLog.i("GFX","ldpi: (" + (int)(height * 0.25) + "x" + (int)(width * 0.25) + ")"); 
} 

好運