【问题标题】:What is the purpose of the file "drawables.xml" under the "values" directory?“values”目录下的文件“drawables.xml”的用途是什么?
【发布时间】:2017-08-22 22:40:08
【问题描述】:

对于一个android studio项目,我在“values”文件夹中找到了一个名为“drawables.xml”的文件

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <item name="ic_menu_camera" type="drawable">@android:drawable/ic_menu_camera</item>
    <item name="ic_menu_gallery" type="drawable">@android:drawable/ic_menu_gallery</item>
    <item name="ic_menu_slideshow" type="drawable">@android:drawable/ic_menu_slideshow</item>
    <item name="ic_menu_manage" type="drawable">@android:drawable/ic_menu_manage</item>
    <item name="ic_menu_share" type="drawable">@android:drawable/ic_menu_share</item>
    <item name="ic_menu_send" type="drawable">@android:drawable/ic_menu_send</item>
</resources>

这个文件的目的是什么?为什么它会创建另一个对现有可绘制对象的引用,为什么不直接使用“@android:drawable/ic_menu_camera”?

【问题讨论】:

    标签: android android-xml android-drawable


    【解决方案1】:

    这可能是开发人员考虑了一些面向未来的想法。

    开发人员可以有 Java 代码参考 android.R.drawable.ic_menu_camera 并有布局或其他东西参考 @android:drawable/ic_menu_camera。但是,如果在以后的某个时间点,开发人员需要从使用可绘制平台切换到自定义平台,那么所有这些引用都需要更改。

    此文件中设置的可绘制别名允许 Java 代码引用 R.drawable.ic_menu_camera,布局和其他内容引用 @drawable/ic_menu_camera。现在,别名表明这些可绘制对象“重定向”到平台可绘制对象。然而,在未来的某个时间,开发者可以添加一个自定义的 ic_menu_camera 可绘制对象,移除别名……Java 代码、布局等无需更改任何其他内容。

    很少有应用程序引用平台可绘制对象,因此您不会看到大多数时候使用这种技巧。但是,对于应用确实引用平台资源的情况,这种别名方法可以减少长期维护。

    FWIW,我在this blog post 中对此进行了更多介绍。

    【讨论】:

      【解决方案2】:

      这对于白标非常有用。因此,例如,您的主应用程序可以使用一个可绘制对象,而白标可以使用另一个,但您的代码可以使用单个引用来引用可绘制对象。

      【讨论】:

        【解决方案3】:

        我认为这个文件没用,因为你已经有了可绘制的文件名。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-05-31
          • 2019-08-31
          • 1970-01-01
          • 1970-01-01
          • 2018-03-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多