“values”目录下的文件“drawables.xml”的用途是什么?

时间:2017-08-22 22:40:08

标签: android android-xml android-drawable

对于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>

这个档案的目的是什么?为什么它会创建另一个对现有drawable的引用,为什么不使用“@android:drawable / ic_menu_camera”?

3 个答案:

答案 0 :(得分:13)

可能是开发人员考虑到了一些未来的证据。

开发人员可能有Java代码引用android.R.drawable.ic_menu_camera,并且布局或其他内容引用@android:drawable/ic_menu_camera。但是,如果稍后,开发人员需要从使用平台drawable切换到自定义平台,那么所有这些引用都需要更改。

此文件中设置的可绘制别名允许Java代码引用R.drawable.ic_menu_camera和布局以及引用@drawable/ic_menu_camera的其他内容。现在,别名表示那些drawables“重定向”到平台drawables。但是,在将来的某个时候,开发人员可以添加自定义ic_menu_camera drawable,删除别名......并且在Java代码,布局等中不需要更改任何其他内容。

很少有应用引用平台绘图,因此大多数时候你都不会看到这种技巧。但是,对于应用确实引用平台资源的情况,这种混叠方法可以减少长期维护。

FWIW,我在this blog post中更多地介绍了这一点。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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