Garanta a compatibilidade com a navegação por gestos

No Android 10 (nível 29 da API) e versões mais recentes, o sistema Android oferece suporte à navegação totalmente baseada em gestos. Há duas coisas que os desenvolvedores precisam fazer para garantir que os apps sejam compatíveis com esse recurso:

  • Estender o conteúdo do app de ponta a ponta na tela
  • Resolver conflitos de gestos do app

Além disso, o Android 13 (nível 33 da API) introduz um gesto de volta preditivo para dispositivos Android, como smartphones, telas grandes e dobráveis, que faz parte de uma versão de vários anos. Os desenvolvedores de apps podem tomar medidas para garantir que os apps ofereçam suporte ao gesto de volta preditivo.

Fornecer conteúdo de ponta a ponta no app

Para aproveitar o espaço extra na tela disponibilizado pela barra de navegação flutuante, você precisa configurar determinadas mudanças no seu app.

Consulte Mostrar conteúdo de ponta a ponta no app para saber mais.

Processar gestos conflitantes do app

O modelo de navegação por gestos pode entrar em conflito com gestos usados anteriormente por desenvolvedores de apps. Como resultado, talvez seja necessário fazer ajustes na interface do usuário do app.

Conflitos com gestos "Voltar"

O novo gesto para voltar é um gesto de deslizar da borda esquerda ou direita da tela para dentro. Isso pode interferir com elementos de navegação do app nessas áreas. Para manter a funcionalidade dos elementos nas bordas esquerda e direita da tela, desative o gesto "Voltar" seletivamente, indicando ao sistema quais regiões precisam receber entrada por toque. Para fazer isso, transmita um List<Rect> para a API View.setSystemGestureExclusionRects() introduzida no Android 10. Esse método também está disponível no ViewCompat a partir de androidx.core:core:1.1.0-dev01.

Por exemplo:

Kotlin

var exclusionRects = listOf(rect1, rect2, rect3)

fun onLayout(
        changedCanvas: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
  // Update rect bounds and the exclusionRects list
  setSystemGestureExclusionRects(exclusionRects)
}

fun onDraw(canvas: Canvas) {
  // Update rect bounds and the exclusionRects list
  setSystemGestureExclusionRects(exclusionRects)
}

Java

List<Rect> exclusionRects;

public void onLayout(
        boolean changedCanvas, int left, int top, int right, int bottom) {
    // Update rect bounds and the exclusionRects list
    setSystemGestureExclusionRects(exclusionRects);
}

public void onDraw(Canvas canvas) {
    // Update rect bounds and the exclusionRects list
    setSystemGestureExclusionRects(exclusionRects);
}

Conflitos com os gestos de Tela inicial ou de Alternância rápida

Os novos gestos do sistema para a tela inicial e a alternância rápida envolvem deslizar a parte de baixo da tela, no espaço anteriormente ocupado pela barra de navegação. Os apps não podem desativar esses gestos como fariam com o gesto "Voltar".

Para atenuar esse problema, o Android 10 introduz a API WindowInsets.getMandatorySystemGestureInsets(), que informa aos apps os limites de reconhecimento de toque.

Jogos e outros apps sem visualização

Jogos e outros apps que não têm uma hierarquia de visualização geralmente exigem que o usuário deslize perto das áreas de gesto do sistema. Nesses casos, os jogos podem usar Window.setSystemGestureExclusionRects() para excluir áreas que se sobrepõem àquelas reservadas para os gestos do sistema. Os jogos precisam excluir essas áreas apenas quando necessário, como durante o jogo.

Se um jogo exigir que o usuário deslize perto da área de gestos de início, o app poderá solicitar o layout no modo imersivo. Isso desativa os gestos do sistema enquanto o usuário está interagindo com o jogo, mas permite que ele os reative ao deslizar de baixo para cima da tela.

Atualizar o app para oferecer suporte ao gesto de volta preditivo

O Android 13 (nível 33 da API) introduz um gesto de volta preditivo para dispositivos Android, como smartphones, telas grandes e dobráveis. O gesto de volta preditivo faz parte de um lançamento plurianual. Quando implementado totalmente, esse recurso permite que os usuários visualizem o destino ou outro resultado de um gesto "Voltar" antes de concluí-lo completamente, permitindo que eles decidam se querem continuar ou permanecer na visualização atual.

Consulte Adicionar suporte para o gesto de volta preditivo para mais detalhes.

Outros recursos

Para saber mais sobre a navegação por gestos, consulte:

Postagens do blog

Vídeos