بعض أنواع الموارد هي تركيبة من موارد متعددة معقدة تمثلها ملفات 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.