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