1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
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>
|