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.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:
- 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
A Microsoft permite que pessoas e organizações trabalhem, aprendam, organizem, se conectem e criem usando seus principais apps do Microsoft 365. Para conseguir isso, ela sabe que é essencial oferecer uma experiência de produtividade ideal para os clientes em todos os dispositivos que eles usam. A Square ajuda milhões de vendedores a administrar seus negócios, desde o processamento seguro de cartões de crédito até soluções de ponto de venda e a configuração de uma loja on-line sem custo financeiro. A Square está migrando para a interface O Twitter é uma das redes sociais mais amplamente usadas.
plataformas de mídia em que os usuários podem ver o que está acontecendo no mundo a qualquer momento
momento. A equipe de engenharia começou a usar o Jetpack Compose para modernizar o
sistema O Monzo é um banco e um app que oferece
serviços financeiros digitais. A missão dele é fazer o dinheiro funcionar
para todos. o sistema de design do Monzo começou a se desviar do Material Design e,
ela queria uma maneira fácil de escrever e manter A Cuvva está melhorando os seguros radicalmente
oferecendo uma maneira realmente flexível de gerenciar a cobertura, tudo pelo seu smartphone.
Os engenheiros do Android da Cuvva passaram um tempo reestruturando o app.
e decidiu adotar um fluxo de ShareChat is a leading social media platform in India that allows users to share their opinions, document their lives, and make new friends in their native language. The standard Red Up Green Down color scheme that many wealth management app users take for granted can be very problematic for colorblind users and those with color vision deficiency.The Futubull team is embracing users’ needs by making concrete improvements so that everyone can grasp the key to wealth. TikTok, the world’s community-driven entertainment destination, brings over 1 billion people together from around the world to discover, create and share content they love. OkCredit is a credit account management app for millions of shop owners and their customers in India. With 140M transactions month over month, and 50M+ downloads, last year alone saw OkCredit recording $50 billion worth of transactions on the app. Operating at such a huge scale scale, OkCredit created a smooth and seamless experience for all their users by focusing on reducing ANRs and improving the app startup time. Lyft is committed to app excellence. They have to be. For a rideshare app — providing a vital, time-sensitive service to millions of drivers and riders every day — a slow or unresponsive app adds unacceptable friction. Josh is a short-video app from India, launched in 2020. One of the fastest growing short-video apps with over 124 million MAUs, optimizing it across a range of devices (high, mid, low end) and maintaining a standard experience across all of them is critical for their success. Improving app startups time and making the app responsive helped them achieve success. Microsoft Lens increases developer productivity using CameraX Zomato is an Indian multinational restaurant aggregator and food delivery company serving customers across 500 cities in India alone. In order to launch new features on their Android app, Headspace spent 8 months refactoring their architecture and rewriting in Kotlin. Learn how this reboot helped their business grow. Google Photos is the home for your memories, and their development team believes people should be able to enjoy those memories across all devices. Learn how Duolingo made the business decision to focus on Android performance and how they improved developer productivity and scaled their business. Mercari allows millions of people to shop and sell almost anything. The company was founded in 2013 in Japan, and it now is the largest smartphone-focused C2C marketplace in Japan. Google Duo is a simple, high quality video calling app for everyone. With the increase of people being at home during the Covid-19 pandemic, the Duo team saw a significant increase in people using the app to stay connected with friends & family, school and work. Headspace drive business growth by investing in Android app quality. SmartNews helps millions of people discover their world everyday by sharing timely news from a diverse set of news sources. Twitter is one of the most widely used social media platforms where users can see what’s happening in the world at any given moment. Delight Room Alarmy is an alarm app that can be turned off only when the pre-selected activities, such as taking a photo, solving a math problem, shaking phone, etc., are performed by the user. The Google Home app helps set up, manage, and control your Google Home, Google Nest, and Chromecast devices—plus thousands of connected home products like lights, cameras, thermostats, and more. Truecaller is an app that offers caller identification, call blocking, chat messaging and organized inbox. The app has a basic offering and a premium version which is ad-free and has a variety of unlocked features like advanced spam blocking and call recording.Microsoft Outlook, Teams e Office aumentaram o número de usuários ativos e a retenção com telas grandes
A Square aumenta a produtividade com o Compose
Twitter tem aumento na eficiência e velocidade dos desenvolvedores com o Compose
O Monzo cria um app mais robusto e de maior qualidade com o Compose
O Cuvva cria mais rápido e com maior qualidade com o Compose
ShareChat addresses Jank issues to increase feed scrolling by 60%
The Key to Wealth for Everyone
TikTok Optimizes User Experience with Android Tools
OkCredit’s average merchant transaction goes up by 30% after reducing ANR
Lyft improves Android app startup time for drivers by 21%
Josh sees increased customer retention by improving app startup time by 30%
Microsoft Lens increases developer productivity using CameraX
Increasing app speed by 30%: a key ingredient in Zomato’s growth recipe
Headspace's Android reboot increases monthly active users by 15%
Google Photos increased daily active users by building for large screens
Duolingo refactors on Android with MVVM and Jetpack libraries
Mercari improves UI development productivity by 56% with Jetpack Compose
Google Duo sees increased engagement and improved ratings by optimizing for larger screens
Headspace drive business growth by investing in Android app quality
SmartNews reduces lines of code by 20% and improves team morale with Kotlin
Twitter increases developer productivity and code reliability with Kotlin
Delight Room increased 90% of its organic US users with Play Console
Google Home reduces #1 cause of crashes by 33%
Truecaller brings ~40% subscribers back with real time developer notifications