Alguns tipos de recurso são uma composição de vários recursos complexos representados por arquivos XML. Um exemplo é um drawable vetorial animado, que é um recurso drawable que encapsula um drawable vetorial e uma animação. Para fazer isso, use pelo menos três arquivos XML, conforme mostrado nos exemplos abaixo.
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" />
Se o drawable vetorial e animações forem reutilizados em outros lugares, essa é a melhor maneira de implementar um drawable vetorial animado. No entanto, se esses arquivos forem usados apenas nesse drawable vetorial animado, há uma forma mais compacta de implementá-los.
Usando o formato de recurso inline do AAPT, você pode definir os três recursos no mesmo arquivo XML, conforme
mostrado no exemplo a seguir.
No caso de um drawable vetorial animado, coloque o arquivo em 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>
A tag XML <aapt:attr >
orienta ao AAPT que trate o filho da tag como um
recurso e o extraia no próprio arquivo de recurso. O valor no nome do atributo especifica onde
o recurso in-line precisa ser usado na tag mãe.
O AAPT gera nomes e arquivos para todos os recursos inline. Os aplicativos criados com esse formato inline são compatíveis com todas as versões do Android.