Risorse XML complesse incorporate

Alcuni tipi di risorse sono una composizione di più risorse complesse rappresentate da file XML. Un esempio è una risorsa di disegno vettoriale animato, ovvero una risorsa disegnabile che incapsula un disegno vettoriale e un'animazione. Ciò richiede l'utilizzo di almeno tre file XML, come mostrato negli esempi seguenti.

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

Se il disegno vettoriale e le animazioni vengono riutilizzati altrove, questo è il modo migliore per implementare un vettore animato. Tuttavia, se questi file vengono utilizzati solo per questo disegno vettoriale animato, esiste un modo più compatto per implementarli.

Utilizzando il formato delle risorse incorporate di AAPT, puoi definire tutte e tre le risorse nello stesso file XML, come mostrato nell'esempio seguente. Per disegnare un vettore animato, inserisci il file in 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>

Il tag XML <aapt:attr > indica all'AAPT di trattare l'elemento figlio del tag come una risorsa ed estrarlo nel proprio file di risorse. Il valore nel nome dell'attributo specifica dove utilizzare la risorsa incorporata all'interno del tag principale.

AAPT genera i file e i nomi delle risorse per tutte le risorse incorporate. Le applicazioni create utilizzando questo formato incorporato sono compatibili con tutte le versioni di Android.