특정 리소스 유형은 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와 호환됩니다.