Navigazione

Per navigazione si intendono le interazioni che consentono agli utenti di spostarsi, entrare e uscire tra i diversi contenuti all'interno dell'app.

Il componente Navigazione di Android Jetpack include la libreria di navigazione, il plug-in Safe Args Gradle e gli strumenti per implementare la navigazione nell'app. Il componente Navigazione gestisce diversi casi d'uso della navigazione, dai semplici clic 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 tre concetti chiave della navigazione e dei tipi principali che utilizzi 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 sostanzialmente 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 spostarsi tra le destinazioni, gestire i link diretti, gestire lo stack di ritorno e altro ancora.

NavController

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 riquadri di navigazione a scomparsa e navigazione in basso con il minimo sforzo.
  • Sicurezza del tipo: include il plug-in Gradle Safe Args, che offre sicurezza dei tipi durante la navigazione e il trasferimento di dati tra destinazioni.
  • 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 relative ai frammenti:supporta e gestisce completamente le transazioni con frammenti.
  • Backup e backup:gestisce correttamente le azioni di back e up per impostazione predefinita.

Configura l'ambiente

Per includere il supporto per la navigazione nel progetto, aggiungi le seguenti dipendenze al file build.gradle dell'app:

Trendy

dependencies {
  def nav_version = "2.7.7"

  // Java language implementation
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

  // Kotlin
  implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
  implementation "androidx.navigation:navigation-ui-ktx:$nav_version"

  // Feature module Support
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

  // Testing Navigation
  androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"

  // Jetpack Compose Integration
  implementation "androidx.navigation:navigation-compose:$nav_version"
}

Kotlin

dependencies {
  val nav_version = "2.7.7"

  // Java language implementation
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

  // Kotlin
  implementation("androidx.navigation:navigation-fragment-ktx:$nav_version")
  implementation("androidx.navigation:navigation-ui-ktx:$nav_version")

  // Feature module Support
  implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version")

  // Testing Navigation
  androidTestImplementation("androidx.navigation:navigation-testing:$nav_version")

  // Jetpack Compose Integration
  implementation("androidx.navigation:navigation-compose:$nav_version")
}

Per informazioni sull'aggiunta di altri componenti dell'architettura al tuo progetto, consulta Aggiungere componenti al progetto.

Passaggi successivi

Per ulteriore documentazione e risorse relative al componente di navigazione, consulta le risorse seguenti.

Guide dettagliate

Per ulteriori informazioni su come implementare un host di navigazione e NavController, nonché informazioni dettagliate su come interagiscono con Compose e altri framework dell'interfaccia utente, consulta le seguenti guide:

Codelab

Video

Samples