Se você já migrou seu app para as novas APIs de retorno do sistema, ative a opção de volta preditiva para receber automaticamente animações no app e oferecer suporte a transições personalizadas.
Adicionar suporte a animações integradas ao app
Depois que o recurso é ativado, seu app exibe animações de volta à tela inicial entre atividades e tarefas.
Você também pode atualizar a dependência do componente do Material Design para a v1.10.0 do MDC Android para receber animações de componentes do Material Design, como estas:
O vídeo mostra um breve exemplo de animações de volta preditiva entre atividades e de volta à tela inicial usando o app Configurações do Android.
- Na animação, o usuário desliza para retornar à tela de configurações anterior, um exemplo de animação entre atividades.
- Nessa tela, o usuário começa a deslizar para voltar uma segunda vez, mostrando uma prévia da tela inicial com o plano de fundo, que é um exemplo da animação de retorno à tela inicial.
- O usuário desliza para a direita, mostrando uma animação da redução da janela até o ícone na tela inicial.
- O usuário retornou totalmente para a tela inicial.
Leia mais sobre como oferecer suporte à volta preditiva.
Adicionar animações e transições personalizadas no app
Com o Android 14, é possível criar transições e animações personalizadas para momentos personalizados do seu app.
Use um conjunto de APIs Predictive Back Progress para desenvolver transições e animações personalizadas no app.
No AndroidX Activity 1.8.0-alpha01 ou mais recente, é possível adicionar transições personalizadas ao
gesto de volta preditiva no app. No
OnBackPressedCallback
,
introduzimos os métodos handleOnBackProgressed
, handleOnBackCancelled
e
handleOnBackStarted
para animar objetos enquanto o usuário desliza para trás. Use
esses métodos se precisar de algo mais personalizado do que as animações padrão
fornecidas pelas novas animações do sistema ou das animações do componente do Material Design.
O modelo a seguir mostra uma animação personalizada: uma caixa
simples, implementada com OnBackPressedCallback
. No modelo, a caixa
é reduzida e se move para seguir a direção do deslize.
Confira um exemplo de como implementar esse recurso.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
...
val box = findViewById<View>(R.id.box)
val screenWidth = Resources.getSystem().displayMetrics.widthPixels
val maxXShift = (screenWidth / 20)
// For the purposes of demonstration, this code snippet presents the
// callback as being always enabled. However, in practice it's always a
// good idea to always disable the callback when you're ready for the
// system to handle back events.
val callback = object : OnBackPressedCallback(enabled = true) {
override fun handleOnBackProgressed(backEvent: BackEvent) {
when (backEvent.swipeEdge) {
BackEvent.EDGE_LEFT ->
box.translationX = backEvent.progress * maxXShift
BackEvent.EDGE_RIGHT ->
box.translationX = -(backEvent.progress * maxXShift)
}
box.scaleX = 1F - (0.1F * backEvent.progress)
box.scaleY = 1F - (0.1F * backEvent.progress)
}
override fun handleOnBackPressed() {
// Do something after the back gesture completes.
}
override fun handleOnBackCancelled() {
// e.g. reset box to the original position
}
}
this.onBackPressedDispatcher.addCallback(callback)
}
}
É esperado que a maioria dos apps use as APIs do AndroidX compatíveis com versões anteriores, mas também
há APIs de plataformas semelhantes na
OnBackAnimationCallback
disponíveis para teste na prévia para desenvolvedores 1 do Android 14. e versões mais recentes.
Adicionar transições de atividades personalizadas no Android 14 e versões mais recentes
Para garantir que as transições de atividades personalizadas ofereçam suporte à volta preditiva no Android 14
e versões mais recentes, você pode usar overrideActivityTransition
em vez de
overridePendingTransition
. Isso significa que a animação de transição é reproduzida quando
o usuário desliza para trás.
Um exemplo de como isso pode funcionar é um cenário em que a atividade B está acima da atividade A na backstack. Você gerenciaria animações de atividades personalizadas da seguinte maneira:
- Chame transições de abertura ou fechamento no método
onCreate
da atividade B. - Quando o usuário navegar para a atividade B, use
OVERRIDE_TRANSITION_OPEN
. Quando o usuário deslizar para voltar à atividade A, useOVERRIDE_TRANSITION_CLOSE
. Ao especificar
OVERRIDE_TRANSITION_CLOSE
,enterAnim
é a animação de entrada da atividade A, eexitAnim
é a animação de saída da atividade B.