2017-08-22 10 views
5

は、私は、このファイルの目的は何「値」フォルダ内の「drawables.xml」という名前のファイル"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"を使用しないのはなぜですか?

答えて

9

開発者には将来の念願が念頭に置かれている可能性があります。

開発者は、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で説明します。

1

私の意見では、このファイルは既に描画可能なファイル名を持っているので役に立たない。

関連する問題