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. |
|
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, é 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.9" // 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.9" // 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 (em inglês)
- 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)
Exemplos
Jetcaster is a sample podcast app, built with Jetpack Compose. The goal of the sample is to showcase building with Compose across multiple form factors (mobile, TV, and Wear) and full featured architecture.
To try out this sample app, use the latest Jetnews is a sample news reading app, built with Jetpack Compose. The goal of the sample is to showcase the current UI capabilities of Compose.
To try out this sample app, use the latest stable version of Android Studio. You can clone this repository Jetsnack is a sample snack ordering app built with Jetpack Compose.
To try out this sample app, use the latest stable version of Android Studio. You can clone this repository or import the project from Android Studio following the steps here.
This These samples showcase different architectural approaches to developing Android apps. In its different branches you'll find the same app (a TODO app) implemented with small differences.
In this branch you'll find:
User Interface built with Jetpack Jetchat is a sample chat app built with Jetpack Compose.
To try out this sample app, use the latest stable version of Android Studio. You can clone this repository or import the project from Android Studio following the steps here.
This sample Learn how this app was designed and built in the design case study, architecture learning journey and modularization learning journey.
This is the repository for the Now in Android app. It is a work in progress 🚧.
Now in Android is a fully functionalJetcaster sample 🎙️
Jetnews sample
Jetsnack sample
Architecture
Jetchat sample
Now in Android App