res文件夹中的可绘制文件夹?

项目层次结构中res文件夹中的三个可绘制文件夹之间有什么区别? 如果我有一个图像放在一个文件夹,我把它放在哪个文件夹?

我将猜测“三个可绘制的文件夹”是drawable-ldpidrawable-mdpidrawable-hdpi 。 在这种情况下,如果您坚持使用所有这些文件夹,则需要在每个文件夹中放置一个图像,其大小与显示的屏幕密度相匹配。 这在联机文档和本博客文章中进行了讨论 。 您可以在这里find一组示例项目,显示根据屏幕密度使用不同的可绘制资源。

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

这是对多设备选项的参考。

正如@CommonsWare所说的,你不需要把资源放在res / layout / drawable /任何东西上,但是如果你希望你的程序在不同屏幕/密度/语言的多个设备上有更好的体验,你可能需要考虑你有这个select。

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

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

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

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