이제 두 번째 Android 11 개발자 프리뷰를 사용할 수 있습니다. 테스트해 보고 의견을 공유하세요.

인라인 복합 XML 리소스

특정 리소스 유형은 XML 파일로 표현되는 여러 복합 리소스로 구성됩니다. 한 예로 애니메이션 벡터 드로어블을 들 수 있으며 이는 벡터 드로어블과 애니메이션을 캡슐화하는 드로어블 리소스입니다. 이 리소스는 최소 3개의 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" />
    

여기에는 단일 애니메이션 벡터 드로어블을 만들 수 있는 파일이 많이 있습니다. 벡터 드로어블과 애니메이션이 다른 곳에서 재사용된다면 이는 애니메이션 벡터 드로어블을 구현하는 가장 좋은 방법입니다. 드로어블과 애니메이션이 이 애니메이션 벡터 드로어블에만 사용된다면 이를 구현하는 더 간단한 방법이 있습니다.

AAPT의 인라인 리소스 형식을 사용하면 동일한 XML 파일에서 세 가지 리소스를 모두 정의할 수 있습니다. 지금 애니메이션 벡터 드로어블을 만들고 있으므로 파일을 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>
    

XML 태그 <aapt:attr >은 태그의 하위 요소가 리소스로 취급되고 자체 리소스 파일로 추출되어야 하는 것을 AAPT에 알립니다. 속성 이름의 값은 상위 태그 내에서 인라인 리소스를 사용할 위치를 지정합니다.

AAPT는 모든 인라인 리소스의 리소스 파일과 이름을 생성합니다. 이 인라인 형식을 사용하여 빌드된 애플리케이션은 모든 버전의 Android와 호환됩니다.