O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Recursos XML in-line complexos

Alguns tipos de recurso são uma composição de vários recursos complexos representados por arquivos XML. Um exemplo é um drawable de vetor animado, que é um recurso drawable que encapsula um drawable de vetor e uma animação. Isso requer o uso de pelo menos três arquivos XML.

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

Há muitos arquivos aqui apenas para fazer um único drawable de vetor animado. Se o drawable de vetor e animações forem reutilizadas em outros lugares, essa é a melhor maneira de implementar um drawable de vetor animado. Se elas forem usadas somente para esse drawable de vetor animado, há uma forma mais compacta de implementá-las.

Usando o formato de recurso in-line do AAPT, você pode definir os três recursos no mesmo arquivo XML. Como estamos criando um drawable de vetor animado, colocamos 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 > informa ao AAPT que o filho da tag deverá ser tratado como um recurso e deverá ser extraído no próprio arquivo de recurso. O valor no nome do atributo especifica onde o recurso in-line deve ser usado na tag pai.

O AAPT gerará arquivos e nomes de recursos para todos os recursos in-line. Os aplicativos criados com esse formato in-line são compatíveis com todas as versões do Android.