Bestimmte Ressourcentypen bestehen aus mehreren komplexen Ressourcen, die durch XML-Dateien dargestellt werden. Ein Beispiel ist ein animiertes Vektor-Drawable, bei dem es sich um eine Drawable-Ressource handelt, die ein Vektor-Drawable und eine Animation enthält. Dazu müssen mindestens drei XML-Dateien verwendet werden, wie in den folgenden Beispielen gezeigt.
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" />
Wenn das Vektor-Drawable und die Animationen woanders wiederverwendet werden, ist dies die beste Möglichkeit, ein animiertes Vektor-Drawable zu implementieren. Wenn diese Dateien jedoch nur für dieses animierte Vektor-Drawable verwendet werden, gibt es eine kompaktere Möglichkeit, sie zu implementieren.
Mit dem Inline-Ressourcenformat von AAPT können Sie alle drei Ressourcen in derselben XML-Datei definieren, wie im folgenden Beispiel gezeigt.
Wenn du ein animiertes Vektor-Drawable erstellen möchtest, lege die Datei unter res/drawable/
ab.
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>
Das XML-Tag <aapt:attr >
weist AAPT an, das untergeordnete Tag des Tags als Ressource zu behandeln und in eine eigene Ressourcendatei zu extrahieren. Der Wert im Attributnamen gibt an, wo die Inline-Ressource im übergeordneten Tag verwendet werden soll.
AAPT generiert Ressourcendateien und Namen für alle Inline-Ressourcen. Anwendungen, die mit diesem Inline-Format erstellt wurden, sind mit allen Android-Versionen kompatibel.