2010-03-28 81 views

回答

75

我打算猜测“三个可绘制的文件夹”是drawable-ldpi,drawable-mdpidrawable-hdpi。在这种情况下,如果您坚持使用所有这些文件夹,则需要在每个文件夹中放置一个图像,其大小与所指示的屏幕密度相匹配。这在online documentation以及blog post中讨论。您可以找到一组示例项目,显示根据屏幕密度here使用不同的可绘制资源。

如果您刚刚开始进行Android开发,您可以摆脱所有这三个目录并创建一个目录,将您的图像放在那里。但最终,对于高质量的应用程序,您将需要在具有不同屏幕密度的不同设备/模拟器上测试您的图像,并可能为每个密度都有不同的图像,以改善应用程序的外观。

+20

你不需要在每个图像中放置图像;该平台将选择与设备密度最匹配的图像,并且它不能准确匹配该设备。 对于瞄准1.6或更高版本的应用程序,强烈建议您将位图放在与其设计密度相匹配的目录中(没有密度规格的位图是没有意义的);当然像各种XML可绘制的非位图通常没有这种需要,应该放在纯文本目录中。 另请参阅:http://developer.android.com/guide/topics/resources/resources-i18n.html#AlternateResources – hackbod 2010-03-28 17:56:47

+4

如果将可缩放位图放在/ drawable文件夹中,LINT会发出抱怨。它目前用于无密码项目,例如基于xml的可绘制项目。 – 2012-04-09 10:55:53

5

这里是对multi device options的引用。

正如@CommonsWare说,你不需要将资源投入在什么,但RES /布局/或绘制/但如果你希望你的程序对不同屏幕/密度多台设备提供更好的体验/你可能想要考虑你有这种选择的语言。

1

还有趣的是,虽然不是特定于图像,但android是如何处理资源的。它给了他们一个加载顺序,更具体的手段将会被挑选出不太具体的东西。

例如,您的值文件夹中的strings.xml中有三个字符串值。在名为values-en的文件夹中也有一个特定的字符串。当android打开您的应用并且您的语言环境匹配en时,它会从values-en加载两个来自values文件夹的缺省值和第三个更具体的字符串。如果您的语言环境为ru,则只会使用默认值,因为您没有值-ru文件夹。

图像也是如此。如果android无法为您的特定屏幕变体找到图像,它将使用可绘制文件夹中的默认值。

在我看来,最好的做法是在通用文件夹中设置默认值/图像,如特定文件夹中的值/绘图和特定值/图像。通过这种方式,当前和未来的设备至少可以显示内容,直到您可以提供特定的版本。