Recursos XML intercalados complejos

Ciertos tipos de recursos son una composición de varios recursos complejos representados por archivos XML. Un ejemplo es un elemento de diseño vectorial animado, que es un recurso de elemento de diseño que encapsula un diseño vectorial y una animación. Este requiere el uso de, por lo menos, tres archivos 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" />
    

Hay muchos archivos aquí solo para hacer un único elemento de diseño vectorial animado. 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. Si solo se usan para este elemento de diseño vectorial animado, puede recurrirse a un método de implementación más compacto.

Con el formato intercalado de recursos de AAPT, puedes definir los tres recursos en el mismo archivo XML. Como estamos haciendo un elemento de diseño vectorial, colocamos 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 su elemento secundario debe tratarse como un recurso y extraerse 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 generará 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.