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:
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.6" // 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.6" // 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)