משאבי XML מורכבים מוטבעים

סוגי משאבים מסוימים כוללים הרכבה של מספר משאבים מורכבים שמיוצגים על ידי קובצי XML. אחת הדוגמאות היא פריט מונפש שניתן להזזה בווקטור – זהו משאב שניתן לשרטוט שמקיף וקטור שניתן לצייר ואנימציה. לשם כך נדרש שימוש בשלושה קובצי 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" />

אם נעשה שימוש חוזר בווקטור הווקטור והאנימציות, זו הדרך הטובה ביותר להטמיע אנימציית וקטורים שניתנים להזזה. אבל אם הקבצים האלה משמשים רק ליצירת וקטור אנימציה הזה, יש דרך קומפקטית יותר ליישם אותם.

באמצעות פורמט המשאבים המוטבע של AAPT אפשר להגדיר את כל שלושת המשאבים באותו קובץ XML, אפשר לראות בדוגמה הבאה. כדי להציג קובץ וקטורי מונפש, צריך לשמור את הקובץ ב-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>

תג ה-XML <aapt:attr > מנחה את AAPT להתייחס אל הצאצא של התג ומחלצים אותו לקובץ משאבים משלו. הערך בשם המאפיין מציין את המיקום כדי להשתמש במשאב המוטבע בתג ההורה.

AAPT יוצר שמות וקובצי משאבים לכל המשאבים המוטבעים. אפליקציות שפותחו באמצעות הפורמט המוטבע הזה תואמות לכל הגרסאות של Android.