Tài nguyên XML phức tạp cùng dòng

Một số loại tài nguyên là một cấu trúc của nhiều tài nguyên phức tạp được biểu thị bằng các tệp XML. Một ví dụ có thể kể đến là vectơ vẽ được ở dạng động, là một tài nguyên có thể vẽ đóng gói một vectơ vẽ được và ảnh động. Bạn cần sử dụng ít nhất 3 tệp XML, như minh hoạ trong các ví dụ sau.

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" />

Nếu vectơ có thể vẽ và ảnh động được dùng lại ở nơi khác, thì đây là cách tốt nhất để triển khai vectơ vẽ được ở dạng động. Nhưng nếu các tệp này chỉ được dùng cho vectơ vẽ được ở dạng động này, thì có một cách ngắn gọn hơn để triển khai chúng.

Khi sử dụng định dạng tài nguyên cùng dòng của AAPT, bạn có thể xác định cả 3 tài nguyên trong cùng một tệp XML, như minh hoạ trong ví dụ sau. Đối với vectơ vẽ được ở dạng động, hãy đặt tệp trong 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>

Thẻ XML <aapt:attr > yêu cầu AAPT coi phần tử con của thẻ là một tài nguyên và trích xuất tài nguyên đó vào tệp tài nguyên riêng. Giá trị trong tên thuộc tính chỉ rõ vị trí sử dụng tài nguyên cùng dòng trong thẻ mẹ.

AAPT tạo tệp và tên tài nguyên cho tất cả các tài nguyên cùng dòng. Các ứng dụng được tạo bằng định dạng cùng dòng này tương thích với mọi phiên bản Android.