Navegação

A navegação se refere às interações que permitem aos usuários navegar, entrar e sair de diferentes partes do conteúdo no app.

O componente Navigation do Android Jetpack inclui a biblioteca Navigation, o plug-in Safe Args do Gradle e ferramentas para ajudar você a implementar a navegação no app. O componente Navigation processa diversos casos de uso de navegação, desde cliques simples em botões até padrões mais complexos, como barras de apps e a gaveta de navegação.

estabelecido.

Principais conceitos

A tabela a seguir fornece uma visão geral dos principais conceitos da navegação e os principais tipos usados para implementá-los.

Conceito

Objetivo

Tipo

Host

Um elemento da interface que contém o destino de navegação atual. Ou seja, quando um usuário navega em um app, o app basicamente troca os destinos dentro e fora do host de navegação.

Gráfico

Uma estrutura de dados que define todos os destinos de navegação no app e como eles se conectam.

NavGraph

Controlador

O coordenador central para gerenciar a navegação entre destinos. O controlador oferece métodos para navegar entre destinos, processar links diretos, gerenciar a backstack e muito mais.

NavController

Destino

Um nó no gráfico de navegação. Quando o usuário navega até esse nó, o host mostra o conteúdo dele.

NavDestination

Normalmente, é criado ao construir o gráfico de navegação.

Rota

Identifica exclusivamente um destino e todos os dados necessários.

Você pode navegar usando rotas. As rotas levam você aos destinos.

Qualquer tipo de dados serializável.

Benefícios e recursos

O componente Navigation oferece vários outros benefícios e recursos, incluindo:

  • Animações e transições: fornecem recursos padronizados para animações e transições.
  • Link direto: implementa e processa links diretos que levam o usuário diretamente a um destino.
  • Padrões de interface: oferece suporte a padrões, como as gavetas de navegação e a navegação de nível baixo, com o mínimo de trabalho extra.
  • Segurança de tipos:inclui suporte para transmissão de dados entre destinos com segurança de tipos.
  • Suporte ao ViewModel: permite definir o escopo de um ViewModel para um gráfico de navegação para compartilhar dados relacionados à interface entre os destinos do gráfico.
  • Transações de fragmentos: oferecem suporte e processam totalmente transações de fragmentos.
  • Voltar e subir: processa ações de voltar e subir corretamente por padrão.

Configurar o ambiente

Para incluir suporte à navegação no seu projeto, adicione as dependências abaixo ao arquivo build.gradle do seu app:

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21'
}
  
dependencies {
  def nav_version = "2.8.8"

  // Jetpack Compose Integration
  implementation "androidx.navigation:navigation-compose:$nav_version"

  // Views/Fragments Integration
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

  // Feature module support for Fragments
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

  // Testing Navigation
  androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"

  // JSON serialization library, works with the Kotlin serialization plugin.
  implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3"
}
plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  kotlin("plugin.serialization") version "2.0.21"
}

dependencies {
  val nav_version = "2.8.8"

  // Jetpack Compose integration
  implementation("androidx.navigation:navigation-compose:$nav_version")

  // Views/Fragments integration
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

  // Feature module support for Fragments
  implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version")

  // Testing Navigation
  androidTestImplementation("androidx.navigation:navigation-testing:$nav_version")

  // JSON serialization library, works with the Kotlin serialization plugin
  implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
}

Para informações sobre como adicionar outros componentes de arquitetura ao projeto, consulte Como adicionar componentes ao seu projeto.

Próximas etapas

Para conferir mais documentações e recursos relacionados ao componente Navigation, consulte as informações abaixo.

Guias detalhados

Para mais informações sobre como implementar um host de navegação e um NavController, bem como detalhes sobre como eles interagem com o Compose e outros frameworks de interface, consulte os guias abaixo:

Codelabs

Vídeos (em inglês)

Exemplos

Neste codelab, você vai aprender a criar e testar ótimas experiências em dispositivos Android Automotive OS para carros estacionados. Você aprenderá a aproveitar ao máximo a ampla variedade de telas encontradas em carros e permitir que os usuários controlem a reprodução de conteúdo em vários cenários exclusivos de carros usando mecanismos Android padrão.

In this codelab, you learn the fundamentals of the Car App Library. This library is used to build apps for Android Auto and Android Automotive OS, which can be used both while parked and driving. You learn how to reuse your implementation across both platforms and have it handle the hard stuff, like different screen configurations and input methods.