2017-08-22 1 views
5

für ein Android-Studio-Projekt, fand ich eine Datei mit dem Namen „drawables.xml“ in dem „Werte“ -OrdnerWozu dient die Datei "drawables.xml" im Verzeichnis "values"?

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

Was ist der Zweck dieser Datei? Warum erstellt es einen anderen Verweis auf einen vorhandenen Zeichensatz und warum nicht einfach "@android: drawable/ic_menu_camera" verwenden?

Antwort

9

Es könnte sein, dass der Entwickler ein bisschen Zukunftssicherheit im Auge hatte.

Der Entwickler könnte Java-Code-Referenz android.R.drawable.ic_menu_camera haben und Layouts oder andere Dinge Referenz @android:drawable/ic_menu_camera haben. Wenn jedoch zu einem späteren Zeitpunkt der Entwickler von der Verwendung einer plattformfähigen zu einer benutzerdefinierten Plattform wechseln musste, müssten alle diese Referenzen geändert werden.

Die in dieser Datei eingerichteten ausklappbaren Aliase ermöglichen, dass Java-Code R.drawable.ic_menu_camera und Layouts und andere Dinge referenziert @drawable/ic_menu_camera. Im Moment weisen die Aliase darauf hin, dass diese Zeichen auf Plattform-Drawables "umgeleitet" werden. Zu gegebener Zeit könnte der Entwickler jedoch eine benutzerdefinierte ic_menu_camera Zeichenform hinzufügen, den Alias ​​entfernen ... und nichts anderes an dem Java-Code, den Layouts usw. ändern.

Wenige Apps beziehen sich auf Plattform-Zeichen, und so wirst du diese Art von Trick meistens nicht sehen. In Fällen, in denen sich Apps auf Plattformressourcen beziehen, kann dieser Alias-Ansatz jedoch die langfristige Wartung verringern.

FWIW, ich beziehe diese mehr in this blog post.

1

Nun, meiner Meinung nach ist diese Datei nutzlos, weil Sie bereits die Namen der Zeichnungsdatei haben.