我已完成应用程序的编码,并且正在运行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文件夹中使用的图像:
答案 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) + ")");
}
祝你好运