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 de 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 criada durante a criação do gráfico de navegação.

Rota

Identifica de forma exclusiva um destino e todos os dados exigidos por ele.

É possível navegar usando rotas. Os trajetos 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 tipo:inclui suporte à 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:

Groovy

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.5"

  // 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"
}

Kotlin

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  kotlin("plugin.serialization") version "2.0.21"
}

dependencies {
  val nav_version = "2.8.5"

  // 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

Exemplos