特定のリソースは複数のXMLにより構成される。次の例はアニメーションベクタードローワブルで、描画可能な「ベクタードローワブル」と「アニメーション」をカプセル化したリソースである。少なくとも3つのXMLファイルが必要である。
res/drawable/avd.xml
<?xml version="1.0" encoding="utf-8"?> <animated-vector xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/vectordrawable" > <target android:name="rotationGroup" android:animation="@anim/rotation" /> </animated-vector>
res/drawable/vectordrawable.xml
<?xml version="1.0" encoding="utf-8"?> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="64dp" android:width="64dp" android:viewportHeight="600" android:viewportWidth="600" > <group android:name="rotationGroup" android:pivotX="300.0" android:pivotY="300.0" android:rotation="45.0" > <path android:fillColor="#000000" android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" /> </group> </vector>
res/anim/rotation.xml
<?xml version="1.0" encoding="utf-8"?> <objectAnimator xmlns:android="http://schemas.android.com/apk/android" android:duration="6000" android:propertyName="rotation" android:valueFrom="0" android:valueTo="360" />
単一のアニメーションベクタードローワブルを作るために、ここに多くのファイルがある。
もし、他の場所でベクタードローワブルやアニメーションを再利用する場合、この方法は実装するための最良の方法である。
もし、一度だけの使用ならば、よりコンパクトな方法で実装できる。
AAPTのインラインリソース形式を使用して、同じXMLファイル内に3つのリソースをすべて定義できる。
アニメーションベクタードローワブルを作るので、ファイルをres/drawable/へ配置する。
res/drawable/avd.xml
<?xml version="1.0" encoding="utf-8"?> <animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt" > <aapt:attr name="android:drawable" > <vector android:height="64dp" android:width="64dp" android:viewportHeight="600" android:viewportWidth="600" > <group android:name="rotationGroup" android:pivotX="300.0" android:pivotY="300.0" android:rotation="45.0" > <path android:fillColor="#000000" android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" /> </group> </vector> </aapt:attr> <target android:name="rotationGroup"> <aapt:attr name="android:animation" > <objectAnimator android:duration="6000" android:propertyName="rotation" android:valueFrom="0" android:valueTo="360" /> </aapt:attr> </target> </animated-vector>
XMLタグの<aapt:attr>は子タグが独自のリソースファイルとして抽出されることAAPTに指示する。
name属性は親タグの中でインラインリソースとして使われる場所を指定する。
AAPTは、全てのインラインリソースのファイルと名前を生成する。
インライン形式を使用してビルドされたアプリは、Androidの全てのバージョンと互換性がある。
※AAPT:Android Asset Packaging Tool
※上記はhttps://developer.android.com/guide/topics/resources/complex-xml-resourcesの意訳である
Android開発者向けドキュメントを意訳してみる。 - 365連休
意訳元https://developer.android.com/のライセンス解釈
ソースコードから抽出されたドキュメントやコードはAndroid Open Source Projectの優先ライセンスであるApache 2.0 licenseが適用され、それ以外のコンテンツはCC BY 2.5が適用されている。
よって、ページ全体の意訳についてはCC BY 2.5における翻案行為、ページ内のコード転載についてはApache 2.0 licenseにおける頒布行為にあたると解釈している。