Некоторые типы ресурсов представляют собой композицию нескольких сложных ресурсов, представленных файлами XML. Одним из примеров является анимированный векторный объект рисования, который представляет собой ресурс рисования, инкапсулирующий векторный объект рисования и анимацию. Для этого необходимо использовать как минимум три 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.