Home | History | Annotate | Download | only in material
      1 page.title=Como definir animaes personalizadas
      2 
      3 @jd:body
      4 
      5 <div id="tb-wrapper">
      6 <div id="tb">
      7 <h2>Esta lio ensina a</h2>
      8 <ol>
      9   <li><a href="#Touch">Personalizar feedback de toque</a></li>
     10   <li><a href="#Reveal">Usar o efeito de revelao</a></li>
     11   <li><a href="#Transitions">Personalizar transies de atividades</a></li>
     12   <li><a href="#ViewState">Animar mudana de estado da visualizao</a></li>
     13   <li><a href="#AnimVector">Animar desenhveis de vetor</a></li>
     14 </ol>
     15 <h2>Voc tambm deve ler</h2>
     16 <ul>
     17   <li><a href="http://www.google.com/design/spec">Especificaes do Material Design</a></li>
     18   <li><a href="{@docRoot}design/material/index.html">Material Design no Android</a></li>
     19 </ul>
     20 </div>
     21 </div>
     22 
     23 
     24 <p>As animaes no Material Design do feedback aos usurios sobre as aes deles e fornecem
     25 continuidade visual  medida que interagem com o seu aplicativo. O tema do Material fornece algumas animaes padro para
     26 botes e transies de atividades e o Android 5.0 (API de nvel 21) e posteriores permitem a personalizao
     27 dessas animaes e a criao de novas:</p>
     28 
     29 <ul>
     30 <li>Feedback de toque</li>
     31 <li>Revelao circular</li>
     32 <li>Transies de atividades</li>
     33 <li>Movimento curvado</li>
     34 <li>Mudanas de estado da visualizao</li>
     35 </ul>
     36 
     37 
     38 <h2 id="Touch">Personalizar feedback de toque</h2>
     39 
     40 <p>Os feedbacks de toque no Material Design fornecem confirmao visual instantnea no
     41 ponto de contato quando os usurios interagem com elementos da interface do usurio. As animaes de feedback de toque padro
     42 para botes usam a nova classe {@link android.graphics.drawable.RippleDrawable}, que passa por transies
     43 entre diferentes estados com um efeito de ondulao.</p>
     44 
     45 <p>Na maioria dos casos, voc deve aplicar essa funcionalidade no XML de visualizao especificando o segundo plano da
     46 visualizao como:</p>
     47 
     48 <ul>
     49 <li><code>?android:attr/selectableItemBackground</code> para uma ondulao delimitada.</li>
     50 <li><code>?android:attr/selectableItemBackgroundBorderless</code> para uma ondulao que se estenda alm
     51 da visualizao. Ele ser desenhado sobre e delimitado pelo pai mais prximo da visualizao com um segundo plano
     52 no nulo.</li>
     53 </ul>
     54 
     55 <p class="note"><strong>Observao:</strong> <code>selectableItemBackgroundBorderless</code>  um novo
     56 atributo introduzido na API de nvel 21.</p>
     57 
     58 
     59 <p>Alternativamente, voc pode definir um {@link android.graphics.drawable.RippleDrawable}
     60 como um recurso XML usando o elemento <code>ripple</code>.</p>
     61 
     62 <p>Voc pode atribuir uma cor para objetos {@link android.graphics.drawable.RippleDrawable}. Para alterar
     63 a cor do feedback de toque padro, use o atributo <code>android:colorControlHighlight</code>
     64 do tema.</p>
     65 
     66 <p>Para obter mais informaes, consulte a referncia de API para a classe {@link
     67 android.graphics.drawable.RippleDrawable}.</p>
     68 
     69 
     70 <h2 id="Reveal">Usar o efeito de revelao</h2>
     71 
     72 <p>Revelar animaes fornece continuidade visual aos usurios ao exibir ou esconder um grupo
     73 de elementos da interface do usurio. O mtodo {@link android.view.ViewAnimationUtils#createCircularReveal
     74 ViewAnimationUtils.createCircularReveal()} permite animar um crculo de recorte para
     75 revelar ou ocultar uma visualizao.</p>
     76 
     77 <p>Para revelar uma visualizao anteriormente invisvel usando esse efeito:</p>
     78 
     79 <pre>
     80 // previously invisible view
     81 View myView = findViewById(R.id.my_view);
     82 
     83 // get the center for the clipping circle
     84 int cx = (myView.getLeft() + myView.getRight()) / 2;
     85 int cy = (myView.getTop() + myView.getBottom()) / 2;
     86 
     87 // get the final radius for the clipping circle
     88 int finalRadius = Math.max(myView.getWidth(), myView.getHeight());
     89 
     90 // create the animator for this view (the start radius is zero)
     91 Animator anim =
     92     ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);
     93 
     94 // make the view visible and start the animation
     95 myView.setVisibility(View.VISIBLE);
     96 anim.start();
     97 </pre>
     98 
     99 <p>Para esconder uma visualizao anteriormente visvel usando esse efeito:</p>
    100 
    101 <pre>
    102 // previously visible view
    103 final View myView = findViewById(R.id.my_view);
    104 
    105 // get the center for the clipping circle
    106 int cx = (myView.getLeft() + myView.getRight()) / 2;
    107 int cy = (myView.getTop() + myView.getBottom()) / 2;
    108 
    109 // get the initial radius for the clipping circle
    110 int initialRadius = myView.getWidth();
    111 
    112 // create the animation (the final radius is zero)
    113 Animator anim =
    114     ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0);
    115 
    116 // make the view invisible when the animation is done
    117 anim.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
    126 anim.start();
    127 </pre>
    128 
    129 
    130 <h2 id="Transitions">Personalizar transies de atividades</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>Figura 1</strong> - uma
    143     transio com elementos compartilhados.</p>
    144     <em>Para reproduzir o filme, clique na tela do dispositivo</em>
    145   </div>
    146 </div>
    147 
    148 <p>As transies de atividades em aplicativos com Material Design fornecem conexes visuais
    149 entre estados diferentes por meio de movimentos e transformaes entre elementos comuns. Voc pode especificar animaes personalizadas para
    150 transies de entrada e de sada e para transies de elementos compartilhados entre atividades.</p>
    151 
    152 <ul>
    153 <li>Uma transio de <strong>entrada</strong> determina como as visualizaes em uma atividade entram em cena.
    154 Por exemplo, na transio de entrada <em>explodir</em>, as visualizaes entram em cena por fora
    155 e voam em direo ao centro da tela.</li>
    156 
    157 <li>Uma transio de <strong>sada</strong> determina como as visualizaes em uma atividade saem de cena. Por
    158   exemplo, na transio de sada <em>explodir</em>, as visualizaes saem de cena a partir do
    159 centro.</li>
    160 
    161 <li>Uma transio de <strong>elementos compartilhados</strong> determina como as visualizaes compartilhadas
    162 entre duas atividades fazem transio entre essas atividades. Por exemplo, se duas atividades tm a mesma
    163 imagem em posies e tamanhos diferentes, a transio de elemento compartilhado <em>changeImageTransform</em> converte
    164 e dimensiona a imagem suavemente entre essas atividades.</li>
    165 </ul>
    166 
    167 <p>O Android 5.0 (API de nvel 21)  compatvel com estas transies de entrada e de sada:</p>
    168 
    169 <ul>
    170 <li><em>explodir</em> - move as visualizaes para dentro ou para fora partindo do centro da cena.</li>
    171 <li><em>deslizar</em> - move as visualizaes para dentro ou para fora partindo de um dos cantos da cena.</li>
    172 <li><em>esmaecer</em> - adiciona ou remove uma visualizao de uma cena alterando a opacidade.</li>
    173 </ul>
    174 
    175 <p>Qualquer transio que amplie a classe {@link android.transition.Visibility}  suportada
    176 como uma transio de entrada ou de sada. Para obter mais informaes, consulte a referncia de API para a classe
    177 {@link android.transition.Transition}.</p>
    178 
    179 <p>O Android 5.0 (API de nvel 21) tambm  compatvel com estas transies de elementos compartilhados:</p>
    180 
    181 <ul>
    182 <li><em>changeBounds</em> - anima as mudanas das visualizaes desejadas em limites do layout.</li>
    183 <li><em>changeBounds</em> - anima as mudanas das visualizaes desejadas em limites de corte.</li>
    184 <li><em>changeBounds</em> - anima as mudanas das visualizaes desejadas em escala e rotao.</li>
    185 <li><em>changeImageTransform</em> - anima as mudanas das imagens desejadas em tamanho e escala.</li>
    186 </ul>
    187 
    188 <p>Ao habilitar as transies de atividades no seu aplicativo, a transio de esmaecimento cruzado padro 
    189 ativada entre as atividades de entrada e sada.</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>Figura 2</strong> - uma transio de cena com um elemento compartilhado.
    194 </p>
    195 
    196 <h3>Especificar transies de atividades</h3>
    197 
    198 <p>Primeiro, habilite as transies de contedo da janela com o atributo <code>android:windowContentTransitions</code>
    199 ao definir um estilo herdado do tema do Material. Voc tambm pode especificar
    200 transies de entrada, sada e elemento compartilhado na definio de estilo:</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>A transio <code>change_image_transform</code> nesse exemplo  definida a seguir:</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>O elemento <code>changeImageTransform</code> corresponde  classe
    230 {@link android.transition.ChangeImageTransform}. Para obter mais informaes, consulte a referncia de
    231 API para {@link android.transition.Transition}.</p>
    232 
    233 <p>Para habilitar transies de contedo da janela no cdigo como alternativa, chame o mtodo
    234 {@link android.view.Window#requestFeature Window.requestFeature()}:</p>
    235 
    236 <pre>
    237 // inside your activity (if you did not enable transitions in your theme)
    238 getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
    239 
    240 // set an exit transition
    241 getWindow().setExitTransition(new Explode());
    242 </pre>
    243 
    244 <p>Para especificar transies no cdigo, chame os mtodos a seguir com um objeto {@link
    245 android.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>Os mtodos {@link android.view.Window#setExitTransition setExitTransition()} e {@link
    257 android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} definem
    258 a transio de sada para a atividade de chamada. Os mtodos {@link android.view.Window#setEnterTransition
    259 setEnterTransition()} e {@link android.view.Window#setSharedElementEnterTransition
    260 setSharedElementEnterTransition()} definem a transio de entrada para a atividade chamada.</p>
    261 
    262 <p>Para obter o efeito completo de uma transio, voc deve habilitar as transies de contedo da janela tanto na atividade
    263 chamada quanto na atividade de chamada. Caso contrrio, a atividade de chamada acionar a transio de sada,
    264 mas voc ver uma transio de janela (como dimensionamento ou esmaecimento).</p>
    265 
    266 <p>Para iniciar uma transio de entrada o mais cedo possvel, use o mtodo
    267 {@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
    268 na atividade chamada. Isso faz com que haja transies de entrada mais dramticas.</p>
    269 
    270 <h3>Iniciar uma atividade usando transies</h3>
    271 
    272 <p>Se voc habilita as transies e define uma transio de sada para uma atividade, a transio
    273 ser ativada ao iniciar outra atividade, como a seguir:</p>
    274 
    275 <pre>
    276 startActivity(intent,
    277               ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
    278 </pre>
    279 
    280 <p>Se voc configurou uma transio de entrada para a segunda atividade, a transio tambm
    281 ser ativada quando a atividade for iniciada. Para desabilitar as transies ao iniciar outra atividade, fornea um pacote de
    282 opes <code>null</code>.</p>
    283 
    284 <h3>Iniciar uma atividade com um elemento compartilhado</h3>
    285 
    286 <p>Para criar uma animao de transio de tela entre duas atividades que tm um elemento compartilhado:</p>
    287 
    288 <ol>
    289 <li>Habilite transies de contedo da janela no tema.</li>
    290 <li>Especifique uma transio de elementos compartilhados no estilo.</li>
    291 <li>Defina a transio como um recurso XML.</li>
    292 <li>Atribua um nome comum aos elementos compartilhados em ambos os layouts com o atributo
    293     <code>android:transitionName</code>.</li>
    294 <li>Use o mtodo {@link android.app.ActivityOptions#makeSceneTransitionAnimation
    295 ActivityOptions.makeSceneTransitionAnimation()}.</li>
    296 </ol>
    297 
    298 <pre>
    299 // get the element that receives the click event
    300 final View imgContainerView = findViewById(R.id.img_container);
    301 
    302 // get the common element for the transition in this activity
    303 final View androidRobotView = findViewById(R.id.image_small);
    304 
    305 // define a click listener
    306 imgContainerView.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>Para obter visualizaes dinmicas compartilhadas geradas no cdigo, use o mtodo
    321 {@link android.view.View#setTransitionName View.setTransitionName()} para especificar um nome de
    322 elemento comum em ambas as atividades.</p>
    323 
    324 <p>Para reverter a animao de transio de cena ao finalizar a segunda atividade, chame o mtodo
    325 {@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()}
    326 em vez de {@link android.app.Activity#finish Activity.finish()}.</p>
    327 
    328 <h3>Iniciar uma atividade com diversos elementos compartilhados</h3>
    329 
    330 <p>Para criar uma animao de transio de cena entre duas atividades que tm mais de um elemento
    331 compartilhado, defina os elementos compartilhados em ambos os layouts com o atributo <code>android:transitionName</code>
    332 (ou use o mtodo {@link android.view.View#setTransitionName View.setTransitionName()} em ambas
    333 as atividades) e crie um objeto {@link android.app.ActivityOptions}, como a seguir:</p>
    334 
    335 <pre>
    336 ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
    337         Pair.create(view1, "agreedName1"),
    338         Pair.create(view2, "agreedName2"));
    339 </pre>
    340 
    341 
    342 <h2 id="CurvedMotion">Usar movimento curvado</h2>
    343 
    344 <p>As animaes no Material Design dependem das curvas para obter padres de interpolao
    345 de tempo e de movimentos espaciais. Com o Android 5.0 (API de nvel 21) e posteriores, voc pode definir padres de curvas de
    346 temporizao personalizada e de movimentos curvados para animaes.</p>
    347 
    348 <p>A classe {@link android.view.animation.PathInterpolator}  um novo interpolador baseado em uma
    349 curva Bzier ou em um objeto {@link android.graphics.Path}. Esse interpolador especifica uma curva de movimento em
    350 um quadrado de 1x1, com pontos de ancoragem em (0,0) e (1,1) e pontos de controle conforme especificado usando
    351 os argumentos do construtor. Voc tambm pode definir um interpolador de caminho como um recurso 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>O sistema fornece recursos XML para trs curvas bsicas na especificao do
    362 Material Design:</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>Voc pode passar um objeto {@link android.view.animation.PathInterpolator} para o mtodo {@link
    371 android.animation.Animator#setInterpolator Animator.setInterpolator()}.</p>
    372 
    373 <p>A classe {@link android.animation.ObjectAnimator} tem novos construtores que permitem a animao de
    374 coordenadas ao longo de um caminho usando duas ou mais propriedades simultaneamente. Por exemplo, o animador a seguir usa um
    375 objeto {@link android.graphics.Path} para animar as propriedades X e Y de uma visualizao:</p>
    376 
    377 <pre>
    378 ObjectAnimator mAnimator;
    379 mAnimator = ObjectAnimator.ofFloat(view, View.X, View.Y, path);
    380 ...
    381 mAnimator.start();
    382 </pre>
    383 
    384 
    385 <h2 id="ViewState">Animar mudana de estado da visualizao</h2>
    386 
    387 <p>A classe {@link android.animation.StateListAnimator} permite a definio de animadores que so executados
    388 quando o estado de uma visualizao muda. O exemplo a seguir mostra como definir um {@link
    389 android.animation.StateListAnimator} como um recurso 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>Para anexar animaes de estado de visualizao personalizadas a uma visualizao, defina um animador usando o elemento
    418 <code>selector</code> em um arquivo de recurso XML, como nesse exemplo, e
    419 atribua-o  visualizao com o atributo <code>android:stateListAnimator</code>. Para atribuir um animador de lista de estado
    420 a uma visualizao no cdigo, use o mtodo {@link android.animation.AnimatorInflater#loadStateListAnimator
    421 AnimationInflater.loadStateListAnimator()} e atribua o animador  visualizao com o mtodo
    422 {@link android.view.View#setStateListAnimator View.setStateListAnimator()}.</p>
    423 
    424 <p>Quando o tema amplia o tema do Material, os botes tm uma animao Z por padro. Para evitar esse
    425 comportamento nos botes, defina o atributo <code>android:stateListAnimator</code> como
    426 <code>@null</code>.</p>
    427 
    428 <p>A classe {@link android.graphics.drawable.AnimatedStateListDrawable} permite a criao de
    429 desenhveis que exibem animaes entre mudanas de estado da visualizao associada. Alguns dos widgets de sistema no
    430 Android 5.0 usam essas animaes por padro. O exemplo a seguir mostra como
    431 definir um {@link android.graphics.drawable.AnimatedStateListDrawable} como um recurso 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">Animar desenhveis de vetor</h2>
    460 
    461 <p><a href="{@docRoot}training/material/drawables.html#VectorDrawables">Desenhveis de vetor</a> so
    462 dimensionveis sem perder definio. A classe {@link android.graphics.drawable.AnimatedVectorDrawable}
    463 permite a animao de propriedades de um desenhvel de vetor.</p>
    464 
    465 <p>Voc normalmente define desenhveis de vetor animados em trs arquivos XML:</p>
    466 
    467 <ul>
    468 <li>Um desenhvel de vetor com o elemento <code>&lt;vector&gt;</code> em
    469 <code>res/drawable/</code></li>
    470 <li>Um desenhvel de vetor animado com o elemento <code>&lt;animated-vector&gt;</code> em
    471 <code>res/drawable/</code></li>
    472 <li>Um ou mais animadores de objeto com o elemento <code>&lt;objectAnimator&gt;</code> em
    473 <code>res/anim/</code></li>
    474 </ul>
    475 
    476 <p>Desenhveis de vetor animados podem animar os atributos dos elementos <code>&lt;group&gt;</code> e
    477 <code>&lt;path&gt;</code>. Os elementos <code>&lt;group&gt;</code> definem um conjunto de
    478 caminhos ou subgrupos e o elemento <code>&lt;path&gt;</code> define caminhos a serem desenhados.</p>
    479 
    480 <p>Ao definir um desenhvel de vetor que voc queira animar, use o atributo <code>android:name</code>
    481 para atribuir um nome nico a grupos e caminhos para poder referenci-los nas definies
    482 do animador. Por exemplo:</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>A definio de desenhvel de vetor animado se refere a grupos e caminhos no desenhvel de vetor
    505 pelos respectivos nomes:</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>As definies de animao representam objetos {@link android.animation.ObjectAnimator} ou {@link
    521 android.animation.AnimatorSet}. O primeiro animador nesse exemplo gira o grupo
    522 desejado em 360:</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>O segundo animador nesse exemplo transforma a forma do caminho do desenhvel
    534 de vetor. Ambos os caminhos devem ser compatveis com a transformao: eles precisam ter o mesmo
    535 nmero de comandos e de parmetros para cada comando.</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>Para obter mais informaes, consulte a referncia de API para {@link
    550 android.graphics.drawable.AnimatedVectorDrawable}.</p>
    551