图像的密度无关(倾角)大小显着不同

时间:2013-04-07 00:11:43

标签: android performance

我已完成应用程序的编码,并且正在运行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测试设备是Galaxy Ace,我的xhdpi测试设备是Galaxy S3,图形看起来很好。

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

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

ldpi mdpi hdpi xhdpi

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分: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) + ")");
}
祝你好运