【问题标题】:Drawable folders in res folder?res文件夹中的可绘制文件夹?
【发布时间】:2011-02-01 18:26:39
【问题描述】:

项目层次结构中res文件夹中的三个drawable文件夹有什么区别?如果我有要放入文件夹的图像,我应该将其放入哪个文件夹?

【问题讨论】:

    标签: android image drawable


    【解决方案1】:

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

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

    【讨论】:

    • 你不需要在每个中都放一张图片;该平台将选择与设备密度最匹配的图像,并且它不是精确匹配的。同样对于面向 1.6 或更高版本的应用程序,强烈建议您将位图放在与其设计密度相匹配的目录中(没有密度规范的位图毫无意义);当然,像各种 XML 可绘制对象这样的非位图通常没有这种需要,应该放在普通目录中。另见:developer.android.com/guide/topics/resources/…
    • 如果您将可缩放位图放在 /drawable 文件夹中,LINT 会报错。它目前适用于无密度项目,例如基于 xml 的可绘制对象。
    【解决方案2】:

    这是对multi device options的引用。

    正如@CommonsWare 所说,您不需要将资源放在 res/ layout/ 或 drawable/ 之外的任何地方,但如果您希望您的程序在具有不同设备的多个设备上获得更好的体验屏幕/密度/语言您可能要考虑您有该选项。

    【讨论】:

      【解决方案3】:

      虽然不是特定于图像,但同样有趣的是 android 处理资源的方式。它给了他们一个加载顺序,更具体意味着它将被挑选而不是不太具体。

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

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

      在我看来,在您的通用文件夹(如 values/drawable 和特定文件夹中的特定值/图像)中有默认值/图像是一种很好的做法。这样,当前和未来的设备都至少可以显示您的内容,直到您可以提供特定版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-10
        • 1970-01-01
        • 1970-01-01
        • 2014-12-14
        • 2015-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多