项目层次结构中res文件夹中三个可绘制文件夹之间的区别是什么?如果我有一个图像放入文件夹,我把它放在哪个文件夹?
答案 0 :(得分:75)
我将猜测“三个可绘制文件夹”是drawable-ldpi
,drawable-mdpi
和drawable-hdpi
。在这种情况下,如果您坚持使用所有这些文件夹,则需要在每个文件夹中放入一个图像,其大小与指示的屏幕密度相匹配。这在online documentation以及此blog post中进行了讨论。您可以找到一组示例项目,显示基于屏幕密度here使用不同的可绘制资源。
如果您刚刚开始Android开发,您可以摆脱所有这三个目录并创建一个drawable
目录,将您的图像放在那里。但最终,对于高质量的应用程序,您将需要在具有不同屏幕密度的不同设备/模拟器上测试图像,并且可能为每个密度设置不同的图像以改善应用程序的外观。
答案 1 :(得分:5)
以下是对multi device options的引用。
正如@CommonsWare所说,你不需要将资源放在除res / layout /或drawable /之外的任何东西中,但如果你希望你的程序在多个不同的设备上有更好的体验屏幕/密度/语言,你可能想要考虑你有这个选项。
答案 2 :(得分:1)
同样有趣的是,虽然不是特定于图像,但是android如何处理资源。它为他们提供了一个加载顺序,其中更具体的意味着它将被选择为不那么具体。
例如,您在values文件夹中的strings.xml中有三个String值。您还在名为values-en的文件夹中有一个特定字符串。当android打开你的应用程序并且你的语言环境与en匹配时,它将从values-en加载来自values文件夹的两个默认值和第三个更具体的字符串。如果您的语言环境是ru,它将只使用默认值,因为您没有values-ru文件夹。
图像也是如此。如果android无法找到特定屏幕变体的图像,它将使用drawable文件夹中的默认值。
在我看来,在您的通用文件夹中使用默认值/图像,例如值/可绘制以及特定文件夹中的特定值/图像,这是一种很好的做法。这样,当前和未来的设备都至少可以显示您的内容,直到您可以提供特定版本。