Risorse XML complesse incorporate

Alcuni tipi di risorse sono una composizione di più risorse complesse rappresentate da file XML. Un esempio è un drawable vettoriale animato, che è una risorsa drawable che incapsula un vettore disegnabile e un'animazione. Ciò richiede l'uso di almeno tre file XML, come mostrato nell'esempio persone che seguo esempi.

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 vettore drawable e le animazioni vengono riutilizzati altrove, questo è il modo migliore per implementare drawable vettoriale animato. Ma se questi file vengono usati solo per il drawable vettoriale animato, c'è un modo più compatto per implementarle.

Utilizzando il formato di risorse in linea di AAPT, puoi definire tutte e tre le risorse nello stesso file XML, come come mostrato nell'esempio che segue. Per un drawable vettoriale animato, inserisci il file sotto 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 ad AAPT di trattare il tag secondario del tag come un ed estrarla nel proprio file di risorse. Il valore nel nome dell'attributo specifica dove per utilizzare la risorsa in linea all'interno del tag padre.

AAPT genera file e nomi di risorse per tutte le risorse in linea. Le applicazioni sviluppate utilizzando questo formato in linea sono compatibili con tutte le versioni di Android.