تضمين موارد 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.