Navigazione

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.

NavGraph

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.

NavController

Destinazione

Un nodo nel grafico di navigazione. Quando l'utente accede a questo nodo, l'host ne visualizza i contenuti.

NavDestination

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.4"

  // 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.4"

  // 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:

Codelab

Video

Campioni