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. |
|
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. |
|
Destino |
Um nó no gráfico de navegação. Quando o usuário navega até esse nó, o host mostra o conteúdo dele. |
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:
- Criar um controlador de navegação: descreve como criar um
NavController
. - Criar um gráfico de navegação: detalha como criar um host e um gráfico de navegação.
- Navegar para um destino: demonstra como usar um
NavController
para se mover entre os destinos no gráfico.
Codelabs
- Aprender a usar a navegação no Jetpack
- Fragmentos e o componente de navegação
- Criar um app adaptável com a navegação dinâmica
Vídeos
- Navegação
- 10 práticas recomendadas para migrar para uma atividade única
- Atividade única: por que, quando e como (Conferência de Desenvolvedores Android 2018)
- Android Jetpack: gerenciar a navegação da interface com o Controlador de navegação (Google I/O '18)