Navigation

Après avoir conçu des écrans individuels pour chaque parcours utilisateur, vous pouvez avoir plusieurs écrans verticaux ou uniques. Vous devez ensuite décider comment concevoir ces écrans pour qu'ils fonctionnent ensemble et comment implémenter la navigation.

conception

La hiérarchie de votre application doit être linéaire et superficielle, comme indiqué dans les consignes de conception des applications.

Pour commencer, le lanceur de votre application doit ouvrir le parcours utilisateur le plus courant. Concevez chaque parcours utilisateur en plaçant le contenu le plus important en haut. Pour les conteneurs verticaux, utilisez la partie inférieure pour rediriger les utilisateurs vers d'autres parcours utilisateur moins courants et vers les paramètres.

Figure 1 : Placez le contenu le plus important en haut des conteneurs verticaux.

Lorsque les utilisateurs accèdent à l'un de vos écrans, assurez-vous qu'ils peuvent utiliser le geste "Balayer pour fermer" pour naviguer vers le bas dans la pile "Retour".

Implémenter la navigation

Lorsque vous implémentez votre navigation, vous disposez de trois options, décrites dans les sections suivantes:

  • Activités uniquement : approche recommandée
  • Activités et fragments
  • Navigation dans Jetpack

Activités uniquement

Étant donné que les écrans verticaux ont généralement un niveau de profondeur, vous pouvez implémenter tous vos écrans à l'aide d'activités et sans fragments.

Nous recommandons vivement cette approche. Elle simplifie votre code, et les activités prennent automatiquement en charge le balayage pour ignorer. Cela facilite également l'implémentation du mode ambiant.

Remarque:Si vous n'utilisez pas de fragments, assurez-vous que vos activités héritent d'un ComponentActivity. Les autres types d'activités utilisent des éléments d'interface utilisateur spécifiques aux mobiles dont vous n'avez pas besoin pour Wear OS.

Activités et fragments

Vous pouvez utiliser des fragments avec des activités dans votre application Wear OS. Toutefois, nous vous le déconseillons, car l'utilisation de fragments pour créer une architecture superficielle et plate n'offre aucun avantage évident.

Remarque:Si vous utilisez des fragments, faites en sorte qu'ils héritent de FragmentActivity. Les autres types d'activités utilisent des éléments d'interface utilisateur spécifiques aux mobiles dont vous n'avez pas besoin pour Wear OS.

Voici quelques-unes des difficultés liées à l'utilisation de fragments dans votre application Wear OS:

  • Vous devez implémenter vous-même la fonctionnalité Balayer pour fermer. Sinon, lorsque l'utilisateur effectue un balayage, il quitte l'ensemble de l'application.
  • Si vous utilisez AmbientMode, vous devez le personnaliser pour qu'il fonctionne correctement. AmbientMode est défini sur l'activité. Vous devez donc en tenir compte lorsque vous implémentez des fragments.

Pour prendre en charge le balayage pour ignorer avec des fragments, vous devez encapsuler la vue contenant le fragment dans la classe SwipeDismissFrameLayout. Pour en savoir plus, consultez Geste Balayer pour fermer. Les utilisateurs bénéficient ainsi d'une expérience cohérente avec votre application.

Remarque:Lorsque vous utilisez des fragments, utilisez FragmentManager.add plutôt que FragmentManager.replace pour prendre en charge le geste Balayer pour fermer. Cela permet de garantir que votre fragment précédent s'affiche sous le fragment supérieur lorsqu'il est balayé.

Navigation dans Jetpack

Jetpack Navigation peut fonctionner sur Wear OS, mais présente les mêmes inconvénients que les fragments. Cela ajoute du travail de développement et, comme la hiérarchie d'une application Wear OS est généralement superficielle et linéaire, elle n'offre pas beaucoup d'avantages. Il est préférable de n'utiliser que des activités.

Pour exploiter pleinement la navigation dans Jetpack, procédez comme suit:

  • Assurez-vous que chaque fragment utilise un élément SwipeDismissFrameLayout comme racine, puis utilisez manuellement l'action "Ignorer" pour revenir en arrière dans le graphique de navigation.
  • Implémentez un FragmentNavigator personnalisé qui affiche les fragments les uns sur les autres.