Android drawables - 使用xhdpi for hdpi

时间:2012-12-22 16:03:52

标签: android drawable dpi hdpi

最后两个问题没有得到答复,我希望“第三个人的魅力”有效:)

我希望HDPI应用程序在“drawable-xhdpi”文件夹中使用那些drawable,在“drawable-mdpi”中使用LDPI设备。所以我不必复制相同的图像。这可能吗?

4 个答案:

答案 0 :(得分:8)

是的,Android会缩放drawable,选择可产生最佳效果的drawable。但并非所有缩放组合都能很好地工作。降级到MDPI可能会产生明显不佳的结果。 XHDPI到HDPI通常会产生非常好的结果。但鉴于目前绝大多数设备都是HDPI,因此拥有HDPI资源可能是值得的。 HDPI到XHDPI的缩放并不可怕。一些1280x720设备使用XHDPI资源。这些通常看起来不错。 Google TV也使用XHDPI。在巨大的屏幕上,可以看到缩放错误。

LDPI设备 - 出于所有实际目的 - 现在不存在。

确实,生成扩展资源是一个庞大的PITA。但是,在我看来,你真的需要做MDPI和HDPI。一旦你有了令人不快的工作流程,就不需要额外的大量工作来生成XHDPI。对于它的价值,如果您的作品是矢量格式,绝大多数资源不需要调整特定的分辨率。例如,似乎没有任何迫切需要像素对齐方形对象的边缘。通常它只是复杂图标和艺术品中的内部特征,可以从一些像素推动中受益。

很明显,XHDPI将越来越普遍。相信我,你不想在事后回去并在XHDPI中重新制作你的所有作品。我的建议是:如果你打算在一年之后仍然在运送你的应用程序,那么就把它吸干,然后在你去的时候做一些讨厌的事情,而它仍然相对容易。

答案 1 :(得分:5)

根据我的经验,如果您只在一些可绘制的文件夹中放置图像,而不是全部,操作系统将为您正在使用的设备选择“最佳”图像,即使它不完全适合。例如,如果您将一个名为arrow.png的图像仅放在drawable-hdpi文件夹中,则所有设备都将使用该图像作为箭头可绘制,并适当缩小或向上缩放,拉伸或缩小图像。

话虽这么说,你应该能够通过简单地将你的图像放在正确的文件夹中并允许设备选择正确的文件来完成你想要的。例如,如果您尝试仅使用一个图像完成任务,请执行以下操作:arrow.png:

drawable-xhdpi / - > arrow.png

drawable-hdpi / - >空

drawable-mdpi / - > arrow.png

drawable-ldpi / - >空

drawable / - >空

如果您在ldpi设备上使用该应用程序,设备将使用mdpi图像,因为它最接近正确的分辨率。在hdpi手机上,它将使用xhdpi图像,因为它再次最接近正确的分辨率。

答案 2 :(得分:3)

是。 Android会自动缩减/升级无法找到的资源。如果您只将资源放在XHDPI文件夹中,它就可以正常工作,Android会负责调整它们以适应所有其他密度。

答案 3 :(得分:-1)

我们应该在MainActivity类中添加此代码,并将图像复制到dhpi文件夹,其中包含ic_launcher,ic_launcher2,ic_launcher3和ic_1是图像名称,我们可以更改大小:宽度和高度

int array_image[]={R.drawable.ic_launcher,
    R.drawable.ic_launcher2,
    R.drawable.ic_launcher3,
    R.drawable.ic_1

}