Per navigazione si intendono le interazioni che consentono agli utenti di spostarsi tra i diversi contenuti della tua app, di accedere ai contenuti e di uscirne.
Il componente Navigation di Android Jetpack include la libreria Navigation, il plug-in Gradle Safe Args e gli strumenti per aiutarti a implementare la navigazione nell'app. Il componente Navigation gestisce diversi casi d'uso di navigazione, dai semplici clic sui pulsanti a pattern più complessi, come le barre delle app e il riquadro di navigazione.
Concetti principali
La tabella seguente fornisce una panoramica dei concetti chiave della navigazione e dei tipi principali utilizzati per implementarli.
Concetto |
Finalità |
Digitazione |
---|---|---|
Moderatore |
Un elemento dell'interfaccia utente che contiene la destinazione di navigazione corrente. In altre parole, quando un utente naviga in un'app, l'app scambia essenzialmente le destinazioni all'interno e all'esterno dell'host di navigazione. |
|
Grafico |
Una struttura di dati che definisce tutte le destinazioni di navigazione all'interno dell'app e il modo in cui sono collegate. |
|
Controller |
Il coordinatore centrale per la gestione della navigazione tra le destinazioni. Il controller offre metodi per spostarsi tra le destinazioni, gestire i link diretti, gestire la pila di ritorno e altro ancora. |
|
Destinazione |
Un nodo nel grafo di navigazione. Quando l'utente accede a questo nodo, l'host mostra i relativi contenuti. |
In genere viene creato durante la costruzione del grafico di navigazione. |
Itinerario |
Identifica in modo univoco una destinazione e tutti i dati richiesti. Puoi navigare utilizzando i percorsi. I percorsi ti portano alle destinazioni. |
Qualsiasi tipo di dati serializzabile. |
Vantaggi e funzionalità
Il componente di navigazione offre una serie di altri vantaggi e funzionalità, tra cui:
- Animazioni e transizioni:fornisce risorse standardizzate per animazioni e transizioni.
- Link diretti:implementa e gestisce i link diretti che indirizzano l'utente direttamente a una destinazione.
- Modelli di UI: supporta modelli come riquadri di navigazione e navigazione in basso con un intervento aggiuntivo minimo.
- Sicurezza del tipo:include il supporto per il passaggio di dati tra destinazioni con sicurezza del tipo.
- Supporto di ViewModel: consente di applicare l'ambito a un
ViewModel
a un grafico di navigazione per condividere i dati relativi all'interfaccia utente tra le destinazioni del grafico. - Transazioni dei frammenti:supporta e gestisce completamente le transazioni dei frammenti.
- Indietro e su: gestisce correttamente le azioni Indietro e Su per impostazione predefinita.
Configura l'ambiente
Per includere il supporto della navigazione nel progetto, aggiungi le seguenti dipendenze al
file build.gradle
dell'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") }
Per informazioni su come aggiungere altri componenti dell'architettura al progetto, consulta Aggiungere componenti al progetto.
Passaggi successivi
Per ulteriore documentazione e risorse relative al componente Navigation, consulta le seguenti risorse.
Guide dettagliate
Per ulteriori informazioni su come implementare un host di navigazione e NavController
, nonché dettagli su come interagiscono con Compose e altri framework UI, consulta le seguenti guide:
- Creare un controller di navigazione: illustra come creare un
NavController
. - Creare il grafico di navigazione: dettagli su come creare un host di navigazione e un grafico di navigazione.
- Vai a una destinazione: mostra come utilizzare un
NavController
per muoverti tra le destinazioni nel grafico.
Codelab
- Scopri Jetpack Navigation
- Frammenti e componente di navigazione
- Creare un'app adattabile con navigazione dinamica
Video
- Navigare nella navigazione
- 10 best practice per il passaggio a una singola attività
- Attività singola: perché, quando e come (Android Dev Summit '18)
- Android Jetpack: gestire la navigazione nell'interfaccia utente con il controller di navigazione (Google I/O '18)
Campioni
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