| page.title=Inline Complex XML Resources |
| parent.title=Application Resources |
| parent.link=index.html |
| @jd:body |
| |
| <p>Certain resource types are a composition of multiple complex resources represented by XML files. |
| One example is an animated vector drawable, which is a drawable resource encapsulating a vector |
| drawable and an animation. This requires the use of at least three XML files.</p> |
| |
| <dl> |
| |
| <dt><code>res/drawable/avd.xml</code></dt> |
| <dd> |
| <pre class="stx"> |
| <?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> |
| </pre> |
| </dd> |
| |
| <dt><code>res/drawable/vectordrawable.xml</code></dt> |
| <dd> |
| <pre class="stx"> |
| <?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> |
| </pre> |
| </dd> |
| |
| <dt><code>res/anim/rotation.xml</code></dt> |
| <dd> |
| <pre class="stx"> |
| <?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" /> |
| </pre> |
| </dd> |
| |
| </dl> |
| |
| <p>There are a lot of files here just to make a single animated vector drawable! |
| If the vector drawable and animations are re-used elsewhere, this is the best way to implement an |
| animated vector drawable. If they’re only ever used for this animated vector drawable, then there is |
| a more compact way to implement them.</p> |
| |
| <p>Using AAPT’s inline resource format, you can define all three resources in the same XML file. |
| Since we’re making an animated vector drawable, we put the file under <code>res/drawable/</code>.</p> |
| |
| <dl> |
| |
| <dt><code>res/drawable/avd.xml</code></dt> |
| <dd> |
| <pre class="stx"> |
| <?xml version="1.0" encoding="utf-8"?> |
| <animated-vector xmlns:android="http://schemas.android.com/apk/res/android" |
| <strong>xmlns:aapt="http://schemas.android.com/aapt"</strong> > |
| |
| <strong><aapt:attr name="android:drawable" ></strong> |
| <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> |
| <strong><aapt:attr /></strong> |
| |
| <target android:name="rotationGroup"> |
| <strong><aapt:attr name="android:animation" ></strong> |
| <objectAnimator |
| android:duration="6000" |
| android:propertyName="rotation" |
| android:valueFrom="0" |
|
android:valueTo="360" /> |
| <strong><aapt:attr></strong> |
| </target> |
| </animated-vector> |
| </pre> |
| </dd> |
| |
| </dl> |
| |
| <p>The XML tag <code><aapt:attr ></code> tells AAPT that the tag’s child shall be treated as a |
| resource and extracted into its own resource file. The value in the attribute name specifies where |
| to use the inline resource within the parent tag.</p> |
| |
| <p>AAPT will generate resource files and names for all of the inline resources. |
| Applications built using this inline format are compatible with all versions of Android.</p> |
| |