Per navigazione si intendono le interazioni che consentono agli utenti di spostarsi, entrare e uscire dai diversi contenuti all'interno dell'app.
Il componente Navigazione di Android Jetpack include la libreria di navigazione, il plug-in Safe Args Gradle e strumenti che consentono di implementare la navigazione nell'app. Il componente Navigazione gestisce diversi casi d'uso della navigazione, dai clic semplici sui pulsanti a pattern più complessi, come le barre delle app e il riquadro di navigazione a scomparsa.
Concetti principali
La seguente tabella fornisce una panoramica dei concetti chiave della navigazione e dei tipi principali che puoi utilizzare per implementarli.
Concetto |
Finalità |
Tipo |
---|---|---|
Moderatore |
Un elemento UI contenente la destinazione di navigazione corrente. In altre parole, quando un utente naviga in un'app, quest'ultima scambia 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 si connettono tra loro. |
|
Controller |
Il coordinatore centrale per la gestione della navigazione tra le destinazioni. Il controller offre metodi per navigare tra le destinazioni, gestire i link diretti, gestire lo stack posteriore e altro ancora. |
|
Destinazione |
Un nodo nel grafico di navigazione. Quando l'utente accede a questo nodo, l'host ne visualizza i contenuti. |
Generalmente viene creato durante la creazione del grafico di navigazione. |
Itinerario |
Identifica in modo univoco una destinazione e tutti i dati richiesti da questa. Puoi navigare utilizzando le route. I percorsi ti portano alle destinazioni. |
Qualsiasi tipo di dati serializzabile. |
Vantaggi e funzionalità
Il componente 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.
- Pattern UI: supporta pattern come i riquadri di navigazione a scomparsa e la navigazione in basso con il minimo sforzo.
- Sicurezza dei tipi:include il supporto per il trasferimento di dati tra destinazioni con la funzionalità Sicurezza dei tipi.
- Supporto ViewModel: consente di definire l'ambito di un
ViewModel
in un grafico di navigazione per condividere dati relativi all'interfaccia utente tra le destinazioni del grafico. - Transazioni frammenti:supporta e gestisce completamente le transazioni con frammenti.
- Backup e backup:gestisce correttamente le azioni di backup e backup per impostazione predefinita.
configura l'ambiente
Per includere il supporto alla navigazione nel progetto, aggiungi le seguenti dipendenze al file build.gradle
dell'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") }
Per informazioni sull'aggiunta di altri componenti dell'architettura al progetto, consulta Aggiungere componenti al progetto.
Passaggi successivi
Per ulteriore documentazione e risorse relative al componente di navigazione, consulta le seguenti risorse.
Guide dettagliate
Per ulteriori informazioni su come implementare un host di navigazione e NavController
, nonché per i dettagli su come interagiscono con Compose e altri framework della UI, consulta le seguenti guide:
- Crea un controller di navigazione: spiega come creare un
NavController
. - Crea il tuo grafico di navigazione: mostra i dettagli di come creare un host di navigazione e un grafico di navigazione.
- Raggiungere una destinazione: mostra come utilizzare
NavController
per spostarsi tra le destinazioni nel grafico.
Codelab
- Impara a utilizzare Jetpack Navigation
- Frammenti e componente di navigazione
- Creare un'app adattiva con navigazione dinamica
Video
- Navigazione nel navigatore
- 10 best practice per passare 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)