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.