La navigation désigne les interactions qui permettent aux utilisateurs de parcourir les différents éléments de contenu de leur appli de différentes manières.
Le composant Navigation d'Android Jetpack comprend la bibliothèque Navigation, le plug-in Gradle Safe Args ainsi que des outils qui vous aident à implémenter la navigation dans l'appli. Le composant Navigation gère divers cas d'utilisation de la navigation, des simples clics sur un bouton aux modèles les plus complexes, tels que les barres d'application et le panneau de navigation.
Concepts clés
Le tableau suivant présente les concepts clés de la navigation et les principaux types que vous utilisez pour les implémenter.
Concept |
Finalité |
Type |
---|---|---|
Hôte |
Un élément d'interface utilisateur contenant la destination de navigation actuelle. Autrement dit, lorsqu'un utilisateur parcourt une appli, celle-ci alterne les destinations vers et depuis l'hôte de navigation. |
|
Graphique |
Une structure de données qui définit toutes les destinations de navigation dans l'appli ainsi que la manière dont elles se connectent entre elles. |
|
Contrôleur |
Le coordinateur central qui gère la navigation entre les destinations. Le contrôleur propose des méthodes pour naviguer entre les destinations, gérer les liens profonds, la pile "Retour", etc. |
|
Destination |
Nœud dans le graphique de navigation. Lorsque l'utilisateur accède à ce nœud, l'hôte affiche son contenu. |
Généralement créé lors de la construction du graphique de navigation. |
Itinéraire |
Identifie une destination et toutes les données requises de manière unique. Vous pouvez utiliser des routes pour la navigation. Des itinéraires vous permettent d'accéder à vos destinations. |
Tout type de données sérialisable |
Avantages et fonctionnalités
Le composant Navigation offre une multitude d'autres avantages et fonctionnalités :
- Animations et transitions: fournit des ressources standardisées pour les animations et les transitions.
- Liens profonds : implémente et gère les liens profonds qui redirigent l'utilisateur directement vers une destination.
- Modèles d'interface utilisateur : compatible avec les modèles tels que les panneaux de navigation ou la barre de navigation inférieure, sans effort.
- Sûreté du typage:inclut la prise en charge de la transmission de données entre les destinations avec la sécurité du typage.
- Compatibilité avec ViewModel : permet d'étendre la portée d'un
ViewModel
à un graphique de navigation pour échanger des données en lien avec l'UI entre les destinations du graphique. - Transactions de fragment : entièrement compatible avec les transactions de fragment.
- Retour par balayage : prend en charge, par défaut, le balayage de l'écran pour effectuer un retour en arrière.
Configurer votre environnement
Pour inclure la prise en charge du composant Navigation dans votre projet, ajoutez les dépendances suivantes au fichier build.gradle
de votre application :
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") }
Pour plus d'informations sur l'ajout de composants d'architecture à votre projet, consultez le guide Ajouter des composants à votre projet.
Étapes suivantes
Pour plus de documentation et de ressources liées au composant Navigation, consultez les pages suivantes.
Guides détaillés
Pour en savoir plus sur l'implémentation d'un hôte de navigation et de NavController
, ainsi que sur la manière dont ils interagissent avec Compose et d'autres frameworks d'UI, consultez les guides suivants :
- Créer un contrôleur de navigation : explique comment créer un
NavController
. - Créer un graphique de navigation : explique comment créer un hôte de navigation ainsi qu'un graphique de navigation.
- Accéder à une destination : montre comment utiliser un
NavController
pour se déplacer entre les destinations d'un graphique.
Ateliers de programmation
- Découvrir la navigation dans Jetpack
- Les fragments et le composant Navigation
- Créer une application adaptative avec la navigation dynamique
Vidéos
- Découvrir Navigation
- 10 bonnes pratiques pour passer à une activité unique
- Activité unique: pourquoi, quand et comment (Sommet des développeurs Android 2018)
- Android Jetpack : gérer la navigation dans l'interface utilisateur avec le contrôleur de navigation (Google I/O 2018)