Niektóre typy zasobów składają się z wielu złożonych zasobów reprezentowanych przez pliki XML. Jednym z przykładów jest animowany obiekt rysowalny wektorowo, czyli zasób rysowalny zawierający obiekt rysowalny wektorowy i animację. Wymaga to użycia co najmniej 3 plików XML, tak jak w poniższych przykładach.
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" />
Jeśli elementy rysowalne wektorowe i animacje są używane w innym miejscu, najlepszym sposobem jest zastosowanie takich animacji. Jeśli jednak są one używane tylko w przypadku animowanego elementu rysowalnego wektorowego, istnieje prostszy sposób ich implementacji.
Korzystając z wbudowanego formatu zasobów AAPT, możesz zdefiniować wszystkie 3 zasoby w tym samym pliku XML, jak pokazano w poniższym przykładzie.
Aby utworzyć animację wektorową rysowalną, umieść plik w lokalizacji 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>
Tag XML <aapt:attr >
informuje AAPT, że ma traktować obiekt podrzędny tagu jako zasób i wyodrębniać go do własnego pliku zasobów. Wartość nazwy atrybutu określa, gdzie w tagu nadrzędnym należy użyć zasobu wbudowanego.
AAPT generuje pliki zasobów i nazwy dla wszystkich wbudowanych zasobów. Aplikacje utworzone w tym formacie wbudowanym są zgodne ze wszystkimi wersjami Androida.