Introdução às animações

Experimente trabalhar com o Compose
O Jetpack Compose é o kit de ferramentas de IU recomendado para Android. Aprenda a usar animações no Compose.

As animações podem adicionar dicas visuais que mostram aos usuários o que está acontecendo no 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 um visual sofisticado ao app, o que proporciona uma aparência de maior qualidade.

O Android inclui diferentes APIs de animação, dependendo do tipo de animação que você quer. Esta documentação apresenta uma visão geral das diferentes maneiras de adicionar movimento à sua interface.

Para entender melhor quando usar animações, consulte também o guia do Material Design sobre movimento.

Animar bitmaps

Figura 1. Um drawable animado.

Para animar um gráfico de bitmap, como um ícone ou uma ilustração, use as APIs de animação desenhável. Normalmente, essas animações são definidas estaticamente com um recurso drawable, mas também é possível definir o comportamento da animação no momento da execução.

Por exemplo, uma boa maneira de comunicar ao usuário que duas ações estão relacionadas é animar um botão de reprodução que se transforma em um botão de pausa quando é tocado.

Para mais informações, leia Animar gráficos drawable.

Animar a visibilidade e o movimento da IU

Figura 2. Uma animação sutil quando uma caixa de diálogo aparece e desaparece torna a mudança na interface menos brusca.

Quando você precisa mudar a visibilidade ou a posição das visualizações no layout, é melhor incluir animações sutis para ajudar o usuário a entender como a interface está mudando.

Para mover, revelar ou ocultar visualizações no layout atual, use o sistema de animação de propriedade fornecido pelo pacote android.animation, disponível no Android 3.0 (nível 11 da API) e versões mais recentes. Essas APIs atualizam as propriedades dos objetos View ao longo de 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. Quando você muda a propriedade Alfa, a visualização aparece ou desaparece gradualmente.

Para criar essas animações da maneira mais simples, ative as animações no seu layout para que, ao mudar a visibilidade de uma visualização, uma animação seja aplicada automaticamente. Para mais informações, consulte Animar automaticamente as atualizações de layout.

Para saber como criar animações usando o sistema de animação de propriedade, leia a Visão geral de animação de propriedade. Você também pode consultar as páginas a seguir para criar animações comuns:

Movimento baseado em física

Figura 3. Animação criada com ObjectAnimator.

Figura 4. Animação criada com APIs baseadas em física.

Sempre que possível, aplique a física do mundo real às suas animações para que elas tenham uma aparência natural. Por exemplo, eles precisam manter o impulso quando o alvo muda e fazer transições suaves durante qualquer mudança.

Para fornecer esses comportamentos, a Biblioteca de Suporte do Android inclui APIs de animação baseadas em física que usam as leis da física para controlar como as animações ocorrem.

Duas animações comuns baseadas em física são as seguintes:

As animações que não são baseadas em física, como as criadas com as APIs ObjectAnimator, são bastante estáticas e têm uma duração fixa. Se o valor de destino mudar, você precisará cancelar a animação no momento da mudança, reconfigurá-la com um novo valor como o novo valor inicial e adicionar o novo valor de destino. Visualmente, esse processo cria uma parada abrupta na animação e um movimento desarticulado depois, conforme mostrado na figura 3.

As animações criadas com APIs de animação baseadas em física, como DynamicAnimation, são impulsionadas por força. A mudança no valor desejado resulta em uma mudança na força. A nova força é aplicada à velocidade atual, o que faz uma transição contínua para o novo destino. Esse processo resulta em uma animação com aparência mais natural, como mostrado na Figura 4.

Animar alterações de layout

Figura 5. Uma animação para mostrar mais detalhes pode ser criada mudando o layout ou iniciando uma nova atividade.

No Android 4.4 (nível 19 da API) e versões mais recentes, é possível usar o framework de transição para criar animações ao trocar o layout na atividade ou no fragmento atual. Basta especificar o layout inicial e final e o tipo de animação que você quer usar. Em seguida, o sistema descobre e executa uma animação entre os dois layouts. Você pode usar isso para trocar toda a interface ou mover ou substituir apenas algumas visualizações.

Por exemplo, quando o usuário toca em um item para ver mais informações, é possível substituir o layout pelos detalhes do item, aplicando uma transição como a mostrada na Figura 5.

Os layouts inicial e final são armazenados em um Scene, embora a cena inicial seja geralmente determinada de forma automática com base no layout atual. Crie um Transition para informar ao sistema o tipo de animação que você quer, chame TransitionManager.go() e o sistema vai executar a animação para trocar os layouts.

Para mais informações, leia Animar mudanças no layout com uma transição. Para ver um exemplo de código, confira BasicTransition .

Animar entre atividades

No Android 5.0 (nível 21 da API) e versões mais recentes, também é possível criar animações que fazem a transição entre as atividades. Isso se baseia no mesmo framework de transição descrito na seção anterior, mas permite criar animações entre layouts em atividades separadas.

É possível aplicar animações simples, como deslizar a nova atividade para dentro pela lateral ou fazer com que ela apareça gradualmente, mas também é possível 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, é possível fazer a transição para uma nova atividade com uma animação que aumenta o item para preencher a tela, como a animação mostrada na figura 5.

Como de costume, você chama startActivity(), mas transmite um pacote de opções fornecido 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 mais recursos, consulte: