Karmaşık XML kaynaklarını satır içi

Belirli kaynak türleri, XML dosyalarıyla temsil edilen birden fazla karmaşık kaynaktan oluşur. Bir örnek olarak, bir vektör çekilebilir ve bir animasyon içeren çekilebilir bir kaynak olan animasyonlu vektörel çizim verilebilir. Bu, aşağıdaki örneklerde gösterildiği gibi en az üç XML dosyasının kullanılmasını gerektirir.

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

Çekilebilir vektör ve animasyonlar başka bir yerde yeniden kullanılıyorsa animasyonlu vektör çekilebilirliğini uygulamanın en iyi yolu budur. Ancak, bu dosyalar yalnızca bu animasyonlu vektör çizimi için kullanılıyorsa bunları uygulamanın daha küçük bir yolu vardır.

AAPT'nin satır içi kaynak biçimini kullanarak, aşağıdaki örnekte gösterildiği gibi, üç kaynağı da aynı XML dosyasında tanımlayabilirsiniz. Animasyonlu vektör çizimi için dosyayı res/drawable/ altına yerleştirin.

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>

<aapt:attr > XML etiketi, AAPT'ye etiketin alt öğesini bir kaynak olarak değerlendirmesini ve bunu kendi kaynak dosyasına çıkarmasını bildirir. Özellik adındaki değer, üst etikette satır içi kaynağın nerede kullanılacağını belirtir.

AAPT, tüm satır içi kaynaklar için kaynak dosyaları ve adlar oluşturur. Bu satır içi biçim kullanılarak oluşturulan uygulamalar Android'in tüm sürümleriyle uyumludur.