Garanta a compatibilidade com a navegação por gestos

A partir do Android 10 (nível 29 da API), o sistema Android oferece suporte total navegação baseada em gestos. Os desenvolvedores de apps precisam fazer duas coisas para garantir seus aplicativos são compatíveis com este 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 uma gesto de volta preditivo para Android como smartphones, telas grandes e dobráveis, que fazem parte de um período lançamento. Os desenvolvedores de aplicativos podem tomar medidas para garantir que seus aplicativos ofereçam suporte ao o gesto de volta preditivo.

Fornecer conteúdo de ponta a ponta no app

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

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

Processar gestos de apps conflitantes

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

Conflitos com gestos "Voltar"

O novo gesto do sistema para voltar é um deslizar em direção à borda esquerda ou direita da tela. Isso pode interferir com elementos de navegação do aplicativo em nessas áreas. Para manter a funcionalidade dos elementos nas extremidades esquerda e direita da tela, desative o gesto de voltar seletivamente, indicando ao quais regiões precisam receber entrada por toque. Para fazer isso, transmita uma 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.

Exemplo:

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)
}
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 gestos de Tela inicial ou Alternância rápida

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

Para mitigar esse problema, o Android 10 introduz a WindowInsets.getMandatorySystemGestureInsets() API, 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 a regiões reservadas para os gestos do sistema. Jogos exclua essas áreas apenas quando necessário, como durante durante as partidas.

Se o jogo precisa que o usuário deslize perto da área de gestos de início, o app pode solicitar a exibição no modo imersivo. Isso desativa os gestos do sistema enquanto o usuário interage com o jogo, mas permite que ele reative os gestos do sistema deslizando de baixo para cima na 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. A volta preditiva o gesto faz parte de um lançamento plurianual. Após a implementação, esse recurso permite que o usuário visualize o destino ou outro resultado de um gesto "Voltar" antes de concluí-lo. Assim, ele pode decidir se quer continuar na visualização atual ou concluir a ação.

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

Outros recursos

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

Postagens do blog

Vídeos