リソースタイプによっては、複数の 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 のインライン リソース形式を使用すると、3 つのリソースをすべて同じ XML ファイル内で定義できます。アニメーション化ベクター型ドローアブルの場合は、ファイルを 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>
<aapt:attr >
XML タグは、このタグの子をリソースとして扱い、独自のリソース ファイルに抽出するよう AAPT に指示します。属性名の値は、親タグ内でインライン リソースを使用する場所を指定します。
AAPT が、すべてのインライン リソースのリソース ファイルと名前を生成します。このインライン形式を使用して作成されたアプリは、Android の全バージョンと互換性があります。