Introdução às animações

Teste o Compose
O Jetpack Compose é o kit de ferramentas de interface recomendado para Android. Aprenda a usar animações no Compose.

As animações podem adicionar dicas visuais que notificam os usuários sobre o que está acontecendo no app. Elas são especialmente úteis quando a interface 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 fornece 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 movimentos (link em inglês).

Animar bitmaps

Figura 1. Um drawable animado.

Para animar um gráfico de bitmap, como um ícone ou ilustração, use as APIs de animação de drawables. Normalmente, essas animações são definidas estaticamente com um recurso drawable, mas você também pode definir o comportamento da animação no tempo de 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 ele é tocado.

Para ver 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 faz com que a mudança da interface seja menos desagradável.

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, você pode usar o sistema de animação de propriedades 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 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. Quando você muda a propriedade Alfa, a visualização aparece ou desaparece.

A maneira mais simples de criar essas animações é ativar animações no layout. Assim, quando você mudar a visibilidade de uma visualização, uma animação será aplicada automaticamente. Para ver mais informações, consulte Animação automática de atualizações de layout.

Para aprender a criar animações usando o sistema de animação de propriedades, leia a Visão geral de animação de propriedades. Consulte também as seguintes páginas para criar animações comuns:

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, aplique física do mundo real às animações para que elas tenham aparência natural. Por exemplo, eles precisam manter o ritmo quando o destino mudar e fazer transições suaves durante qualquer mudança.

Para oferecer 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 como as 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 desejado mudar, você precisará cancelar a animação no momento da mudança, reconfigurar a animação com um novo valor como o novo valor inicial e adicionar o novo valor desejado. Visualmente, esse processo cria uma parada abrupta na animação e um movimento desarticulado depois, como mostrado na Figura 3.

Animações criadas com APIs de animação baseadas em física, como DynamicAnimation, são impulsionadas pela força. A mudança no valor de destino resulta em uma alteração na força. A nova força se aplica à velocidade atual, o que faz uma transição contínua para o novo destino. Esse processo resulta em uma animação mais natural, como mostrada na Figura 4.

Animar alterações de layout

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

No Android 4.4 (nível 19 da API) e versões mais recentes, você pode usar o framework de transição para criar animações ao trocar o layout na atividade ou fragmento atual. Tudo o que você precisa fazer é 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. Ele pode ser usado 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, você pode substituir o layout pelos detalhes do item, aplicando uma transição como a mostrada na Figura 5.

O layout inicial e final são armazenados em um Scene, embora a cena inicial geralmente seja determinada automaticamente pelo layout atual. Você cria um Transition para informar ao sistema que tipo de animação você quer e chama TransitionManager.go(), e o sistema executa a animação para trocar os layouts.

Para ver mais informações, leia Animar alterações de layout usando uma transição. Para ver um exemplo de código, consulte BasicTransition (link em inglês).

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 transição entre suas atividades. Isso é baseado no mesmo framework de transição descrito na seção anterior, mas permite criar animações entre layouts em atividades separadas.

Você pode aplicar animações simples, como deslizar a nova atividade pelo lado ou esmaecer, 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 perfeitamente esse item para 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 recursos adicionais, consulte: