5

我已经完成了我的应用程序的编码,并且正在运行 Lint 以确保解决所有性能问题。

我为 ldpi、mdpi、hdpi 和 xhdpi 创建了图形;但 Lint 告诉我出了点问题:

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 测试设备是 Galaxy Ace,我的 xhdpi 测试设备是 Galaxy S3,图形看起来不错。

我不明白这个警告试图告诉我什么:对于我的 186x149 像素的 xhdpi 图像(完全适合我的 xhdpi 布局),93x75 dp 指的是什么?

这是我在每个 dpi 文件夹中使用的图像:

低密度脂蛋白 mdpi hdpi xhdpi

4

2 回答 2

6

Lint 向您展示了每个图像的密度无关大小,或者如果它必须为您更改大小,基本上 mdpi 大小将是多少。它期望的相对大小是: xhdpi: 200% hdpi: 150% mdpi: 100% ldpi; 75% 所以如果你的 mdpi 图像是 61x49,它会期望你的 ldpi 是那个的 75%,或者 46x37。此外,它会期望您的 xhdpi 为 122x98,而不是您拥有的 186x149。

因此,查看每个数字集 - 左侧基本上表示图像的大小,如果它为 mdpi 显示调整大小。所以理论上这应该是真的:

xhdpi*0.5 == hdpi * 0.667 == mdpi == ldpi*1.33

在实践中,您可以按照自己的方式进行操作,但是您的布局很难相互对应。

于 2013-04-07T00:30:51.330 回答
3

有时代码胜于雄辩:

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) + ")");
}

祝你好运

于 2015-07-02T00:02:03.853 回答