Recursos XML intercalados complejos

Ciertos tipos de recursos son una composición de varios recursos complejos representados por archivos en formato XML. Un ejemplo es un elemento de diseño vectorial animado, que es un recurso de elementos de diseño que encapsula un diseño vectorial y una animación. Esto requiere el uso de al menos tres archivos en formato XML, como se muestra en los siguientes ejemplos.

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 vuelven a usarse el elemento de diseño vectorial y las animaciones en otro lugar, esta es la mejor manera de implementar un elemento de diseño vectorial animado. Pero si estos archivos solo se usan para este elemento de diseño vectorial animado, entonces hay una forma más compacta de implementarlos.

Con el formato de recursos intercalados de AAPT, puedes definir los tres recursos en el mismo archivo en formato XML, como se muestra en el siguiente ejemplo. Para un elemento de diseño vectorial animado, coloca el archivo debajo de 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 etiqueta XML <aapt:attr > le indica a AAPT que trate al elemento secundario de la etiqueta como un recurso y que lo extraiga en su propio archivo de recursos. El valor en el nombre del atributo especifica dónde usar el recurso intercalado dentro de la etiqueta principal.

AAPT genera archivos de recursos y nombres para todos los recursos intercalados. Las aplicaciones que se compilan con este formato intercalado son compatibles con todas las versiones de Android.