منابع پیچیده 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 فایل ها و نام های منبع را برای همه منابع درون خطی تولید می کند. برنامه های ساخته شده با استفاده از این فرمت درون خطی با تمام نسخه های اندروید سازگار هستند.