Ressources XML complexes intégrées

Certains types de ressources sont constitués de plusieurs ressources complexes représentées par des fichiers XML. Par exemple, un drawable vectoriel animé associe un drawable vectoriel et une animation. Cela nécessite l'utilisation d'au moins trois fichiers XML, comme indiqué dans les exemples suivants.

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

Si le drawable vectoriel et les animations sont réutilisés ailleurs, c'est le meilleur moyen d'implémenter un drawable vectoriel animé. Toutefois, si ces fichiers ne sont utilisés que pour ce drawable vectoriel animé, il existe une manière plus compacte de les implémenter.

En utilisant le format de ressource intégré AAPT, vous pouvez définir les trois ressources dans le même fichier XML, comme illustré dans l'exemple suivant. Pour un drawable vectoriel animé, placez le fichier sous 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>

La balise XML <aapt:attr > indique à l'AAPT de traiter l'élément enfant de la balise comme une ressource et de l'extraire dans son propre fichier de ressources. La valeur du nom de l'attribut indique où utiliser la ressource intégrée dans la balise parente.

L'AAPT génère les fichiers de ressources et le nom de toutes les ressources intégrées. Les applications créées avec ce format intégré sont compatibles avec toutes les versions d'Android.