As animações podem adicionar dicas visuais que notificam os usuários sobre o que está acontecendo no seu app. Elas são especialmente úteis quando a IU muda de estado, por exemplo, quando um novo conteúdo é carregado ou novas ações ficam disponíveis. As animações também dão ao app uma aparência refinada e de maior qualidade.
O Android inclui APIs de animação diferentes, dependendo do tipo de animação que você quer. Esta página fornece uma visão geral das diferentes maneiras de adicionar movimento à sua IU.
Para entender melhor quando você precisa usar animações, consulte também o guia do Material Design para movimento (link em inglês).
Animar bitmaps

Figura 1. Um drawable animado.
Quando você quiser animar um gráfico de bitmap, como um ícone ou uma ilustração, use as APIs de animação de drawables. Geralmente, essas animações são definidas estaticamente com um recurso de drawable, mas você também pode definir o comportamento da animação no tempo de execução.
Por exemplo, animar um botão de reprodução que se transforma em um botão de pausa quando tocado é uma boa maneira de comunicar ao usuário que as duas ações estão relacionadas e que pressionar uma torna a outra visível.
Para ver mais informações, leia Animar gráficos de drawables.
Animar a visibilidade e o movimento da IU

Figura 2. Uma animação sutil quando uma caixa de diálogo aparece e desaparece faz com que a alteração na IU fique menos impactante.
Quando precisar alterar a visibilidade ou a posição das visualizações no seu layout, inclua animações sutis para ajudar o usuário a entender como a IU está mudando.
Para mover, revelar ou ocultar visualizações no layout atual, use o sistema de animação de propriedades fornecido pelo pacote android.animation
, disponível no Android 3.0 (API de nível 11) e em versões posteriores. Essas APIs atualizam as propriedades dos seus objetos View
por um período, redesenhando continuamente a visualização conforme as propriedades mudam. Por exemplo, quando você muda as propriedades de posição, a visualização se move pela tela, e quando você altera a propriedade Alfa, a visualização entra ou sai de foco.
Para criar essas animações com o mínimo de esforço, você pode astivar animações no layout para que, ao mudar a visibilidade de uma visualização, uma animação seja aplicada automaticamente. Para ver mais informações, consulte Animar automaticamente atualizações de layout.
Para saber como criar animações com o sistema de animação de propriedades, leia a Visão geral da animação de propriedade. Ou consulte as páginas a seguir para criar animações comuns:
Alterar a visibilidade de uma visualização com um fading cruzado
Alterar a visibilidade de uma visualização com uma revelação circular
Movimento baseado em física

Figura 3. Animação criada com o ObjectAnimator.

Figura 4. Animação criada com APIs baseadas em física.
Sempre que possível, suas animações precisam aplicar a física do mundo real para ter uma aparência natural. Por exemplo, elas precisam manter o impulso quando tiverem o destino alterado, com transições suaves diante de qualquer alteração.
Para fornecer esses comportamentos, a Biblioteca de Suporte do Android inclui APIs de animação baseadas em física que dependem das leis da física para controlar a maneira como suas animações ocorrem.
Duas animações comuns baseadas em física são as seguintes:
Animações que não são baseadas na física, como as criadas com APIs ObjectAnimator
, são bastante estáticas e têm uma duração fixa. Se o valor de segmentação for alterado, você precisará cancelar a animação no momento da alteração, reconfigurá-la com um novo valor inicial e adicionar o novo valor de segmentação. Visualmente, esse processo cria uma parada abrupta na animação e um movimento desarticulado, como mostra a Figura 3.
Já animações criadas com APIs de animação baseadas em física, como DynamicAnimation
, são impulsionadas pela força. A alteração no valor de segmentação resulta em uma alteração na força. A nova força se aplica à velocidade existente, que faz uma transição contínua para o novo alvo. Esse processo resulta em uma animação mais natural, como mostra a Figura 4.
Animar alterações de layout

Figura 5. Uma animação para mostrar mais detalhes pode ser conseguida por meio da alteração do layout ou pelo início de uma nova atividade.
No Android 4.4 (API de nível 19) e em versões posteriores, você pode usar o framework de transição para criar animações ao trocar o layout na atividade ou no fragmento atual. Você só precisa especificar o layout inicial e final, além do tipo de animação que você quer usar. Em seguida, o sistema descobrirá e executará uma animação entre os dois layouts. Você pode usar isso para trocar toda a IU ou mover/substituir apenas algumas visualizações.
Por exemplo, quando o usuário toca em um item para ver mais informações, você pode substituir o layout pelos detalhes do item, aplicando uma transição como a mostrada na Figura 5.
O layout inicial e final serão armazenados em uma Scene
, embora a cena inicial geralmente seja determinada automaticamente a partir do layout atual.
Você cria uma Transition
para informar ao sistema que tipo de animação você quer e, em seguida, chama TransitionManager.go()
, e o sistema executa a animação para trocar os layouts.
Para ver mais informações, leia Animar entre layouts usando uma transição. E, para ver uma amostra de código, consulte BasicTransition (link em inglês).
Animar entre atividades
No Android 5.0 (API de nível 21) e em versões mais recentes, você também pode criar animações que fazem a transição entre suas atividades. Isso é baseado no mesmo framework de transição descrito acima para animar alterações de layout, mas permite criar animações entre layouts em atividades separadas.
Você pode aplicar animações simples, como deslizar a nova atividade pelo lado ou fazê-la aparecer gradualmente, mas também pode criar animações que fazem a transição entre visualizações compartilhadas em cada atividade. Por exemplo, quando o usuário toca em um item para ver mais informações, você pode fazer a transição para uma nova atividade com uma animação que aumenta o item até preencher a tela, como a mostrada na Figura 5.
Como de costume, você chama startActivity()
, mas passa um pacote de opções fornecidas por ActivityOptions.makeSceneTransitionAnimation()
. Esse pacote de opções pode incluir quais visualizações são compartilhadas entre as atividades para que o framework de transição possa conectá-las durante a animação.
Para ver todos os detalhes, consulte Iniciar uma atividade com uma animação. E, para ver uma amostra de código, consulte ActivitySceneTransitionBasic.