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