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 podem tomar medidas para garantir que os apps tenham suporte ao gesto de volta preditivo.
Ofereça conteúdo de ponta a ponta no app
Para aproveitar o espaço extra na tela disponibilizado pela barra de navegação flutuante, é necessário configurar algumas mudanças no app.
Consulte Mostrar conteúdo de ponta a ponta no app para mais detalhes.
Processar gestos conflitantes do app
O modelo de navegação por gestos pode entrar em conflito com gestos usados anteriormente por desenvolvedores de apps. Por isso, pode ser necessário fazer ajustes na interface do usuário do seu app.
Conflitos com gestos de retorno
O novo gesto do sistema para voltar é um gesto de deslizar da borda esquerda ou
direita da tela para dentro. Isso pode interferir nos 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" de forma seletiva, indicando ao
sistema quais regiões precisam receber a entrada por toque. Você pode fazer isso transmitindo um List<Rect>
para a API View.setSystemGestureExclusionRects()
introduzida no Android 10. Esse método também está disponível em ViewCompat
desde
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 gestos de casa ou de alternância rápida
Os novos gestos do sistema para a tela inicial e a troca rápida envolvem deslizar na parte de baixo 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 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 a áreas reservadas para 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 pode solicitar para exibição no modo imersivo. Isso desativa os gestos do sistema enquanto o usuário está interagindo 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. O gesto de volta preditivo faz parte de uma versão plurianual. Quando totalmente implementado, esse recurso permite que os usuários visualizem o destino ou outro resultado de um gesto "Voltar" antes de concluí-lo. Assim, eles podem decidir se querem continuar ou permanecer na visualização atual.
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
- Navegação por gestos: como processar sobreposições visuais (II) (link em inglês)