Resource XML kompleks inline

Jenis resource tertentu merupakan komposisi dari beberapa resource kompleks yang direpresentasikan oleh file XML. Salah satu contohnya adalah animasi vektor drawable, yaitu resource drawable yang merangkum vektor drawable dan animasi. Hal ini memerlukan penggunaan minimal tiga file XML, seperti ditunjukkan pada contoh berikut.

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

Jika vektor drawable dan animasi digunakan ulang di tempat lain, cara ini adalah yang paling tepat untuk menerapkan animasi vektor drawable. Namun, jika file ini hanya digunakan untuk animasi vektor drawable, ada cara yang lebih sederhana untuk menerapkannya.

Dengan menggunakan format resource inline AAPT, Anda dapat menentukan ketiga resource dalam file XML yang sama, seperti ditunjukkan pada contoh berikut. Untuk animasi vektor drawable, sertakan file dalam 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 > tag XML memberi tahu AAPT untuk memperlakukan turunan tag sebagai resource dan mengekstraknya ke dalam file resource-nya sendiri. Nilai dalam nama atribut menentukan tempat untuk menggunakan resource inline dalam tag induk.

AAPT menghasilkan file dan nama resource untuk semua resource inline. Aplikasi yang di-build menggunakan format inline ini kompatibel dengan semua versi Android.