Recursos XML intercalados complejos

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

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 elemento de diseño que encapsula un diseño vectorial y una animación. Este requiere el uso de, por lo menos, tres archivos en formato 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 en formato 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.