图像在其独立于密度的大小方面存在显著差异(DIP)

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文件夹中使用的图片:

ldpi mdpi hdpi xhdpi

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
实际上,您可以按任何方式进行设置,但是很难使您的布局相互对应。

谢谢,我现在明白了。但是,根据我的眼观感受,我的xhdpi图形应该为186x149——在122x98看起来很愚蠢。那么,我应该忽略这个Lint建议吗? - DaveSav
我肯定会忽略它。反正这只是关于尺寸的建议而已。 - HalR
使用S3时,也可以看看这个(以防你没有使用这种方案):https://dev59.com/KmbWa4cB1Zd3GeqPY6RG#12557007 - Stephan Branczyk

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

祝你好运


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接