ทรัพยากร XML ที่ซับซ้อนแบบในหน้า

ทรัพยากรบางประเภทเป็นองค์ประกอบของทรัพยากรที่ซับซ้อนหลายรายการซึ่งแสดงด้วยไฟล์ XML ตัวอย่างหนึ่งคือเวกเตอร์ที่เคลื่อนไหวได้แบบวาดได้ ซึ่งเป็นทรัพยากรที่ถอนออกได้ซึ่งห่อหุ้มเวกเตอร์ไว้ ที่ถอนออกได้ และเป็นภาพเคลื่อนไหว โดยต้องใช้ไฟล์ XML อย่างน้อย 3 ไฟล์ดังที่แสดงใน กำลังติดตาม ตัวอย่าง

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 คุณจะกำหนดทรัพยากรทั้ง 3 รายการในไฟล์ 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 ทุกเวอร์ชัน