• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1page.title=Mendefinisikan Animasi Custom
2
3@jd:body
4
5<div id="tb-wrapper">
6<div id="tb">
7<h2>Pelajaran ini mengajarkan Anda cara</h2>
8<ol>
9  <li><a href="#Touch">Menyesuaikan Umpan Balik Sentuh</a></li>
10  <li><a href="#Reveal">Menggunakan Reveal Effect</a></li>
11  <li><a href="#Transitions">Menyesuaikan Transisi Aktivitas</a></li>
12  <li><a href="#ViewState">Menganimasikan Perubahan Status Tampilan</a></li>
13  <li><a href="#AnimVector">Menganimasikan Drawable Vektor</a></li>
14</ol>
15<h2>Anda juga harus membaca</h2>
16<ul>
17  <li><a href="http://www.google.com/design/spec">Spesifikasi desain bahan</a></li>
18  <li><a href="{@docRoot}design/material/index.html">Desain bahan di Android</a></li>
19</ul>
20</div>
21</div>
22
23
24<p>Animasi dalam desain bahan memberi pengguna umpan balik tentang tindakannya dan menyediakan
25kesinambungan visual saat pengguna berinteraksi dengan aplikasi Anda. Tema bahan menyediakan beberapa animasi default
26untuk tombol dan transisi aktivitas, dan Android 5.0 (API level 21) ke atas memungkinkan Anda menyesuaikan
27animasi ini dan membuat yang baru:</p>
28
29<ul>
30<li>Umpan balik sentuh</li>
31<li>Singkap Melingkar</li>
32<li>Transisi aktivitas</li>
33<li>Gerakan melengkung</li>
34<li>Perubahan status tampilan</li>
35</ul>
36
37
38<h2 id="Touch">Menyesuaikan Umpan Balik Sentuh</h2>
39
40<p>Umpan balik sentuh dalam desain bahan menyediakan konfirmasi visual seketika pada
41titik kontak bila pengguna berinteraksi dengan elemen UI. Animasi umpan balik sentuh default
42untuk tombol menggunakan kelas {@link android.graphics.drawable.RippleDrawable} baru, yang bertransisi
43di antara berbagai status dengan efek riak.</p>
44
45<p>Di sebagian besar kasus, Anda harus menerapkan fungsionalitas ini dalam XML tampilan dengan menetapkan
46latar belakang tampilan sebagai:</p>
47
48<ul>
49<li><code>?android:attr/selectableItemBackground</code> untuk riak berbatas.</li>
50<li><code>?android:attr/selectableItemBackgroundBorderless</code> untuk riak yang meluas ke luar
51tampilan. Latar belakang ini akan digambar di atas, dan dibatasi oleh, induk tampilan terdekat dengan
52latar belakang non-null.</li>
53</ul>
54
55<p class="note"><strong>Catatan:</strong> <code>selectableItemBackgroundBorderless</code> adalah
56atribut baru yang diperkenalkan di API level 21.</p>
57
58
59<p>Atau, Anda bisa mendefinisikan {@link android.graphics.drawable.RippleDrawable}
60sebagai sumber daya XML dengan menggunakan elemen <code>ripple</code>.</p>
61
62<p>Anda bisa menetapkan warna ke objek-objek {@link android.graphics.drawable.RippleDrawable}. Untuk mengubah
63warna default umpan balik sentuh, gunakan atribut <code>android:colorControlHighlight</code>
64tema.</p>
65
66<p>Untuk informasi selengkapnya, lihat referensi API bagi kelas {@link
67android.graphics.drawable.RippleDrawable}.</p>
68
69
70<h2 id="Reveal">Menggunakan Reveal Effect</h2>
71
72<p>Animasi singkap memberi pengguna kesinambungan visual saat menampilkan atau menyembunyikan sekelompok
73elemen UI. Metode {@link android.view.ViewAnimationUtils#createCircularReveal
74ViewAnimationUtils.createCircularReveal()} memungkinkan Anda menganimasikan lingkaran terpangkas
75untuk memperlihatkan atau menyembunyikan tampilan.</p>
76
77<p>Untuk memperlihatkan tampilan yang sebelumnya tidak terlihat dengan menggunakan efek ini:</p>
78
79<pre>
80// previously invisible view
81View myView = findViewById(R.id.my_view);
82
83// get the center for the clipping circle
84int cx = (myView.getLeft() + myView.getRight()) / 2;
85int cy = (myView.getTop() + myView.getBottom()) / 2;
86
87// get the final radius for the clipping circle
88int finalRadius = Math.max(myView.getWidth(), myView.getHeight());
89
90// create the animator for this view (the start radius is zero)
91Animator anim =
92    ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);
93
94// make the view visible and start the animation
95myView.setVisibility(View.VISIBLE);
96anim.start();
97</pre>
98
99<p>Untuk menyembunyikan sebuah tampilan yang sebelumnya terlihat dengan menggunakan efek ini:</p>
100
101<pre>
102// previously visible view
103final View myView = findViewById(R.id.my_view);
104
105// get the center for the clipping circle
106int cx = (myView.getLeft() + myView.getRight()) / 2;
107int cy = (myView.getTop() + myView.getBottom()) / 2;
108
109// get the initial radius for the clipping circle
110int initialRadius = myView.getWidth();
111
112// create the animation (the final radius is zero)
113Animator anim =
114    ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0);
115
116// make the view invisible when the animation is done
117anim.addListener(new AnimatorListenerAdapter() {
118    &#64;Override
119    public void onAnimationEnd(Animator animation) {
120        super.onAnimationEnd(animation);
121        myView.setVisibility(View.INVISIBLE);
122    }
123});
124
125// start the animation
126anim.start();
127</pre>
128
129
130<h2 id="Transitions">Menyesuaikan Transisi Aktivitas</h2>
131
132<!-- shared transition video -->
133<div style="width:290px;margin-left:35px;float:right">
134  <div class="framed-nexus5-port-span-5">
135  <video class="play-on-hover" autoplay="">
136    <source src="{@docRoot}design/material/videos/ContactsAnim.mp4">
137    <source src="{@docRoot}design/material/videos/ContactsAnim.webm">
138    <source src="{@docRoot}design/material/videos/ContactsAnim.ogv">
139  </video>
140  </div>
141  <div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
142    <p class="img-caption" style="margin-top:3px;margin-bottom:10px"><strong>Gambar 1</strong> - Transisi
143    dengan elemen bersama.</p>
144    <em>Untuk memutar ulang film, klik layar perangkat</em>
145  </div>
146</div>
147
148<p>Transisi aktivitas dalam aplikasi desain bahan memberikan koneksi visual antar berbagai status
149melalui gerakan dan transformasi di antara elemen umum. Anda bisa menetapkan animasi custom untuk
150masuk ke dan keluar dari transisi dan untuk transisi elemen bersama di antara aktivitas.</p>
151
152<ul>
153<li>Transisi <strong>masuk</strong> menentukan cara tampilan di aktivitas memasuki suatu babak.
154misalnya, dalam transisi masuk <em>explode</em>, tampilan memasuki babak dari sisi luar
155dan melayang masuk ke arah tengah layar.</li>
156
157<li>Transisi <strong>keluar</strong> menentukan cara tampilan di aktivitas keluar dari suatu babak. Misalnya
158, dalam transisi keluar <em>explode</em>, tampilan akan keluar dari babak dari bagian
159tengahnya.</li>
160
161<li>Transisi <strong>elemen bersama</strong> menentukan cara menggunakan bersama suatu tampilan
162oleh dua transisi aktivitas di antara aktivitas-aktivitas ini. Misalnya, jika dua aktivitas memiliki
163gambar yang sama dengan posisi dan ukuran berbeda, transisi elemen bersama <em>changeImageTransform</em>
164mentransformasikan dan menskalakan gambar secara mulus di antara aktivitas-aktivitas ini.</li>
165</ul>
166
167<p>Android 5.0 (API level 21) mendukung transisi masuk dan transisi keluar ini:</p>
168
169<ul>
170<li><em>explode</em> - Memindahkan tampilan masuk ke atau keluar dari tengah babak.</li>
171<li><em>slide</em> - Memindahkan tampilan masuk ke atau keluar dari salah satu tepi babak.</li>
172<li><em>fade</em> - Menambahkan atau menghapus tampilan dari babak dengan mengubah opasitasnya.</li>
173</ul>
174
175<p>Transisi apa pun yang memperluas kelas {@link android.transition.Visibility} didukung
176sebagai transisi masuk atau transisi keluar. Untuk informasi selengkapnya, lihat referensi API untuk kelas
177{@link android.transition.Transition}.</p>
178
179<p>Android 5.0 (API level 21) juga mendukung transisi elemen bersama ini:</p>
180
181<ul>
182<li><em>changeBounds</em> - Menganimasikan perubahan pada batas-batas layout tampilan target.</li>
183<li><em>changeClipBounds</em> - Menganimasikan perubahan pada batas-batas pemangkasan tampilan target.</li>
184<li><em>changeTransform</em> - Menganimasikan perubahan pada skala dan rotasi tampilan target.</li>
185<li><em>changeImageTransform</em> - Menganimasikan perubahan pada ukuran dan skala gambar target.</li>
186</ul>
187
188<p>Bila Anda mengaktifkan transisi aktivitas dalam aplikasi, transisi memudar-silang default akan
189diaktifkan di antara aktivitas masuk dan aktivitas keluar.</p>
190
191<img src="{@docRoot}training/material/images/SceneTransition.png" alt="" width="600" height="405" style="margin-top:20px" />
192<p class="img-caption">
193  <strong>Gambar 2</strong> - Transisi babak dengan satu elemen bersama.
194</p>
195
196<h3>Menetapkan transisi custom</h3>
197
198<p>Pertama, aktifkan transisi konten jendela dengan atribut <code>android:windowContentTransitions</code>
199bila Anda mendefinisikan gaya yang mewarisi tema bahan. Anda juga bisa menetapkan
200transisi-transisi masuk, keluar, dan elemen bersama dalam definisi gaya:</p>
201
202<pre>
203&lt;style name="BaseAppTheme" parent="android:Theme.Material">
204  &lt;!-- enable window content transitions -->
205  &lt;item name="android:windowContentTransitions">true&lt;/item>
206
207  &lt;!-- specify enter and exit transitions -->
208  &lt;item name="android:windowEnterTransition">@transition/explode&lt;/item>
209  &lt;item name="android:windowExitTransition">@transition/explode&lt;/item>
210
211  &lt;!-- specify shared element transitions -->
212  &lt;item name="android:windowSharedElementEnterTransition">
213    &#64;transition/change_image_transform&lt;/item>
214  &lt;item name="android:windowSharedElementExitTransition">
215    &#64;transition/change_image_transform&lt;/item>
216&lt;/style>
217</pre>
218
219<p>Transisi <code>change_image_transform</code> dalam contoh ini didefinisikan sebagai berikut:</p>
220
221<pre>
222&lt;!-- res/transition/change_image_transform.xml -->
223&lt;!-- (see also Shared Transitions below) -->
224&lt;transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
225  &lt;changeImageTransform/>
226&lt;/transitionSet>
227</pre>
228
229<p>Elemen <code>changeImageTransform</code> menunjukkan
230kelas {@link android.transition.ChangeImageTransform}. Untuk informasi selengkapnya, lihat referensi
231API untuk {@link android.transition.Transition}.</p>
232
233<p>Sebaliknya, untuk mengaktifkan transisi konten jendela dalam kode Anda, panggil
234metode {@link android.view.Window#requestFeature Window.requestFeature()}:</p>
235
236<pre>
237// inside your activity (if you did not enable transitions in your theme)
238getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
239
240// set an exit transition
241getWindow().setExitTransition(new Explode());
242</pre>
243
244<p>Untuk menetapkan transisi dalam kode Anda, panggil metode-metode ini dengan objek {@link
245android.transition.Transition}:</p>
246
247<ul>
248  <li>{@link android.view.Window#setEnterTransition Window.setEnterTransition()}</li>
249  <li>{@link android.view.Window#setExitTransition Window.setExitTransition()}</li>
250  <li>{@link android.view.Window#setSharedElementEnterTransition
251      Window.setSharedElementEnterTransition()}</li>
252  <li>{@link android.view.Window#setSharedElementExitTransition
253      Window.setSharedElementExitTransition()}</li>
254</ul>
255
256<p>Metode {@link android.view.Window#setExitTransition setExitTransition()} dan {@link
257android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} mendefinisikan
258transisi keluar untuk aktivitas yang memanggil. Metode {@link android.view.Window#setEnterTransition
259setEnterTransition()} dan {@link android.view.Window#setSharedElementEnterTransition
260setSharedElementEnterTransition()} mendefinisikan transisi masuk untuk aktivitas yang dipanggil.</p>
261
262<p>Untuk mendapatkan efek penuh sebuah transisi, Anda harus mengaktifkan transisi konten jendela pada
263aktivitas yang memanggil maupun aktivitas yang dipanggil. Jika tidak, aktivitas yang memanggil akan memulai transisi keluar,
264namun kemudian Anda akan melihat transisi jendela (seperti mengelupas atau memudar).</p>
265
266<p>Untuk memulai transisi masuk sesegera mungkin, gunakan metode
267{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
268pada aktivitas yang dipanggil. Ini memungkinkan Anda mendapatkan transisi masuk yang lebih dramatis.</p>
269
270<h3>Memulai aktivitas dengan menggunakan transisi</h3>
271
272<p>Jika Anda mengaktifkan transisi dan mengatur transisi keluar untuk aktivitas, transisi itu akan diaktifkan
273bila Anda menjalankan aktivitas lain sebagai berikut:</p>
274
275<pre>
276startActivity(intent,
277              ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
278</pre>
279
280<p>Jika Anda telah mengatur transisi masuk untuk aktivitas kedua, transisi juga akan diaktifkan
281bila aktivitas dimulai. Untuk menonaktifkan transisi bila Anda memulai aktivitas lain, sediakan
282bundel opsi <code>null</code>.</p>
283
284<h3>Memulai aktivitas dengan satu elemen bersama</h3>
285
286<p>Untuk membuat animasi transisi layar di antara dua aktivitas yang memiliki satu elemen bersama:</p>
287
288<ol>
289<li>Aktifkan transisi konten jendela dalam tema Anda.</li>
290<li>Tetapkan transisi elemen bersama dalam gaya Anda.</li>
291<li>Definisikan transisi Anda sebagai sumber daya XML.</li>
292<li>Tetapkan nama umum pada elemen bersama dalam kedua layout dengan
293    atribut <code>android:transitionName</code>.</li>
294<li>Gunakan metode {@link android.app.ActivityOptions#makeSceneTransitionAnimation
295ActivityOptions.makeSceneTransitionAnimation()}.</li>
296</ol>
297
298<pre>
299// get the element that receives the click event
300final View imgContainerView = findViewById(R.id.img_container);
301
302// get the common element for the transition in this activity
303final View androidRobotView = findViewById(R.id.image_small);
304
305// define a click listener
306imgContainerView.setOnClickListener(new View.OnClickListener() {
307    &#64;Override
308    public void onClick(View view) {
309        Intent intent = new Intent(this, Activity2.class);
310        // create the transition animation - the images in the layouts
311        // of both activities are defined with android:transitionName="robot"
312        ActivityOptions options = ActivityOptions
313            .makeSceneTransitionAnimation(this, androidRobotView, "robot");
314        // start the new activity
315        startActivity(intent, options.toBundle());
316    }
317});
318</pre>
319
320<p>Untuk tampilan dinamis bersama yang Anda hasilkan dalam kode, gunakan
321metode {@link android.view.View#setTransitionName View.setTransitionName()} untuk menetapkan
322nama elemen umum di kedua aktivitas.</p>
323
324<p>Untuk membalik animasi transisi babak bila Anda menyelesaikan aktivitas kedua, panggil metode
325{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()}
326sebagai ganti {@link android.app.Activity#finish Activity.finish()}.</p>
327
328<h3>Memulai aktivitas dengan beberapa elemen bersama</h3>
329
330<p>Untuk membuat animasi transisi babak antara dua aktivitas yang memiliki lebih dari satu
331elemen bersama, definisikan elemen bersama di kedua layout dengan atribut <code>android:transitionName</code>
332 (atau gunakan metode {@link android.view.View#setTransitionName View.setTransitionName()}
333di kedua aktivitas), dan buat sebuah objek {@link android.app.ActivityOptions} sebagai berikut:</p>
334
335<pre>
336ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
337        Pair.create(view1, "agreedName1"),
338        Pair.create(view2, "agreedName2"));
339</pre>
340
341
342<h2 id="CurvedMotion">Menggunakan Gerakan Melengkung</h2>
343
344<p>Animasi dalam desain bahan mengandalkan kurva untuk pola interpolasi waktu dan
345gerakan spasial. Dengan Android 5.0 (API level 21) ke atas, Anda bisa mendefinisikan kurva pewaktuan custom dan
346pola gerakan melengkung untuk animasi.</p>
347
348<p>Kelas {@link android.view.animation.PathInterpolator} adalah interpolator baru berdasarkan sebuah
349kurva Bézier atau objek {@link android.graphics.Path}. Interpolator ini menetapkan kurva gerakan
350dalam bujur sangkar 1x1, dengan titik-titik jangkar di (0,0) dan (1,1) dan titik-titik kontrol sebagaimana ditetapkan menggunakan
351argumen konstruktor. Anda juga bisa mendefinisikan interpolator path sebagai sumber daya XML:</p>
352
353<pre>
354&lt;pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
355    android:controlX1="0.4"
356    android:controlY1="0"
357    android:controlX2="1"
358    android:controlY2="1"/>
359</pre>
360
361<p>Sistem menyediakan sumber daya XML untuk tiga kurva dasar dalam
362spesifikasi desain bahan:</p>
363
364<ul>
365  <li><code>&#64;interpolator/fast_out_linear_in.xml</code></li>
366  <li><code>&#64;interpolator/fast_out_slow_in.xml</code></li>
367  <li><code>&#64;interpolator/linear_out_slow_in.xml</code></li>
368</ul>
369
370<p>Anda bisa meneruskan objek {@link android.view.animation.PathInterpolator} ke metode {@link
371android.animation.Animator#setInterpolator Animator.setInterpolator()}.</p>
372
373<p>Kelas {@link android.animation.ObjectAnimator} memiliki konstruktor-konstruktor baru yang memungkinkan Anda menganimasikan
374koordinat bersama sebuah path dengan menggunakan dua atau beberapa properti sekaligus. Misalnya, animator berikut
375menggunakan objek {@link android.graphics.Path} untuk menganimasikan properti X dan Y sebuah tampilan:</p>
376
377<pre>
378ObjectAnimator mAnimator;
379mAnimator = ObjectAnimator.ofFloat(view, View.X, View.Y, path);
380...
381mAnimator.start();
382</pre>
383
384
385<h2 id="ViewState">Menganimasikan Perubahan Status Tampilan</h2>
386
387<p>Kelas {@link android.animation.StateListAnimator} memungkinkan Anda mendefinisikan animator yang berjalan bila
388status tampilan berubah. Contoh berikut menampilkan cara mendefinisikan {@link
389android.animation.StateListAnimator} sebagai sumber daya XML:</p>
390
391<pre>
392&lt;!-- animate the translationZ property of a view when pressed -->
393&lt;selector xmlns:android="http://schemas.android.com/apk/res/android">
394  &lt;item android:state_pressed="true">
395    &lt;set>
396      &lt;objectAnimator android:propertyName="translationZ"
397        android:duration="@android:integer/config_shortAnimTime"
398        android:valueTo="2dp"
399        android:valueType="floatType"/>
400        &lt;!-- you could have other objectAnimator elements
401             here for "x" and "y", or other properties -->
402    &lt;/set>
403  &lt;/item>
404  &lt;item android:state_enabled="true"
405    android:state_pressed="false"
406    android:state_focused="true">
407    &lt;set>
408      &lt;objectAnimator android:propertyName="translationZ"
409        android:duration="100"
410        android:valueTo="0"
411        android:valueType="floatType"/>
412    &lt;/set>
413  &lt;/item>
414&lt;/selector>
415</pre>
416
417<p>Untuk menyertakan animasi status tampilan custom ke tampilan, definisikan animator menggunakan
418elemen <code>selector</code> dalam sumber daya file XML sebagaimana dalam contoh ini, dan tetapkan ke
419tampilan Anda dengan atribut <code>android:stateListAnimator</code>. Untuk menetapkan animator daftar status
420ke sebuah tampilan dalam kode Anda, gunakan metode {@link android.animation.AnimatorInflater#loadStateListAnimator
421AnimationInflater.loadStateListAnimator()}, dan tetapkan animator ke tampilan dengan
422metode {@link android.view.View#setStateListAnimator View.setStateListAnimator()}.</p>
423
424<p>Bila tema Anda memperluas tema bahan, tombol-tombol akan memiliki animasi Z secara default. Untuk menghindari
425perilaku ini di tombol Anda, aturlah atribut <code>android:stateListAnimator</code> ke
426<code>@null</code>.</p>
427
428<p>Kelas {@link android.graphics.drawable.AnimatedStateListDrawable} memungkinkan Anda membuat drawable
429yang menampilkan animasi di antara perubahan status tampilan terkait. Sebagian widget sistem di
430Android 5.0 menggunakan animasi ini secara default. Contoh berikut menampilkan cara
431mendefinisikan {@link android.graphics.drawable.AnimatedStateListDrawable} sebagai sumber daya XML:</p>
432
433<pre>
434&lt;!-- res/drawable/myanimstatedrawable.xml -->
435&lt;animated-selector
436    xmlns:android="http://schemas.android.com/apk/res/android">
437
438    &lt;!-- provide a different drawable for each state-->
439    &lt;item android:id="@+id/pressed" android:drawable="@drawable/drawableP"
440        android:state_pressed="true"/>
441    &lt;item android:id="@+id/focused" android:drawable="@drawable/drawableF"
442        android:state_focused="true"/>
443    &lt;item android:id="@id/default"
444        android:drawable="@drawable/drawableD"/>
445
446    &lt;!-- specify a transition -->
447    &lt;transition android:fromId="@+id/default" android:toId="@+id/pressed">
448        &lt;animation-list>
449            &lt;item android:duration="15" android:drawable="@drawable/dt1"/>
450            &lt;item android:duration="15" android:drawable="@drawable/dt2"/>
451            ...
452        &lt;/animation-list>
453    &lt;/transition>
454    ...
455&lt;/animated-selector>
456</pre>
457
458
459<h2 id="AnimVector">Menganimasikan Drawable Vektor</h2>
460
461<p><a href="{@docRoot}training/material/drawables.html#VectorDrawables">Drawable Vektor </a>
462bisa diubah skalanya tanpa kehilangan definisi. Kelas {@link android.graphics.drawable.AnimatedVectorDrawable}
463memungkinkan Anda menganimasikan properti drawable vektor.</p>
464
465<p>Anda biasanya mendefinisikan drawable vektor yang dianimasikan dalam tiga file XML:</p>
466
467<ul>
468<li>Drawable vektor dengan elemen <code>&lt;vector&gt;</code> dalam
469<code>res/drawable/</code></li>
470<li>Drawable vektor animasi dengan elemen <code>&lt;animated-vector&gt;</code> dalam
471<code>res/drawable/</code></li>
472<li>Satu atau beberapa animator objek dengan elemen <code>&lt;objectAnimator&gt;</code> dalam
473<code>res/anim/</code></li>
474</ul>
475
476<p>Drawable vektor yang dianimasikan bisa menganimasikan atribut elemen <code>&lt;group&gt;</code> dan
477<code>&lt;path&gt;</code>. Elemen <code>&lt;group&gt;</code> mendefinisikan satu set
478path atau subgrup, dan elemen <code>&lt;path&gt;</code> mendefinisikan path yang harus digambar.</p>
479
480<p>Bila Anda mendefinisikan drawable vektor yang ingin dianimasikan, gunakan atribut <code>android:name</code>
481untuk menetapkan nama unik ke grup dan path, sehingga Anda bisa merujuknya dari
482definisi animator Anda. Misalnya:</p>
483
484<pre>
485&lt;!-- res/drawable/vectordrawable.xml -->
486&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
487    android:height="64dp"
488    android:width="64dp"
489    android:viewportHeight="600"
490    android:viewportWidth="600">
491    &lt;group
492        <strong>android:name="rotationGroup"</strong>
493        android:pivotX="300.0"
494        android:pivotY="300.0"
495        android:rotation="45.0" >
496        &lt;path
497            <strong>android:name="v"</strong>
498            android:fillColor="#000000"
499            android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
500    &lt;/group>
501&lt;/vector>
502</pre>
503
504<p>Definisi drawable vektor yang dianimasikan merujuk pada grup dan path dalam drawable vektor
505berdasarkan namanya:</p>
506
507<pre>
508&lt;!-- res/drawable/animvectordrawable.xml -->
509&lt;animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
510  android:drawable="@drawable/vectordrawable" >
511    &lt;target
512        android:name="rotationGroup"
513        android:animation="@anim/rotation" />
514    &lt;target
515        android:name="v"
516        android:animation="@anim/path_morph" />
517&lt;/animated-vector>
518</pre>
519
520<p>Definisi animasi menyatakan objek {@link android.animation.ObjectAnimator} atau {@link
521android.animation.AnimatorSet}. Animator pertama dalam contoh ini memutar
522grup target sebanyak 360 derajat:</p>
523
524<pre>
525&lt;!-- res/anim/rotation.xml -->
526&lt;objectAnimator
527    android:duration="6000"
528    android:propertyName="rotation"
529    android:valueFrom="0"
530    android:valueTo="360" />
531</pre>
532
533<p>Animator kedua dalam contoh ini perlahan-lahan mengubah bentuk path drawable vektor dari satu bentuk ke
534bentuk yang lain. Kedua path harus kompatibel untuk morphing: keduanya harus memiliki jumlah perintah yang sama
535dan jumlah parameter yang sama untuk setiap perintah.</p>
536
537<pre>
538&lt;!-- res/anim/path_morph.xml -->
539&lt;set xmlns:android="http://schemas.android.com/apk/res/android">
540    &lt;objectAnimator
541        android:duration="3000"
542        android:propertyName="pathData"
543        android:valueFrom="M300,70 l 0,-70 70,70 0,0   -70,70z"
544        android:valueTo="M300,70 l 0,-70 70,0  0,140 -70,0 z"
545        android:valueType="pathType" />
546&lt;/set>
547</pre>
548
549<p>Untuk informasi selengkapnya, lihat referensi API bagi {@link
550android.graphics.drawable.AnimatedVectorDrawable}.</p>
551