Comment coder une barre de navigation inférieure pour une application Android

Ce que vous allez créer

L’équipe de conception de matériel de Google définit la fonctionnalité des barres de navigation inférieures dans Android comme suit:

Les barres de navigation du bas facilitent l'exploration et la commutation entre les vues de niveau supérieur en un seul clic.
Un appui sur une icône de navigation inférieure vous amène directement à la vue associée ou actualise la vue active.

Selon les directives officielles de conception des matériaux pour la barre de navigation inférieure, elle doit être utilisée lorsque votre application possède:

  • trois à cinq destinations de premier niveau
  • destinations nécessitant un accès direct

L'application Google Android de Google est un exemple d'application populaire qui implémente la barre de navigation inférieure. Elle l'utilise pour naviguer vers différentes destinations de l'application. Vous pouvez le constater vous-même en téléchargeant l'application Google+ à partir du magasin Google Play (si vous ne l'avez pas déjà sur votre appareil). La capture d'écran suivante provient de l'application Google+ et affiche une barre de navigation inférieure.. 

Dans cet article, vous allez apprendre à afficher des éléments de menu dans une barre de navigation inférieure dans Android. Nous allons utiliser le BottomNavigationView API pour effectuer la tâche. Pour un bonus supplémentaire, vous apprendrez également à utiliser la fonctionnalité de modèles d'Android Studio pour amorcer rapidement votre projet avec une barre de navigation inférieure.. 

Vous trouverez un exemple de projet (en Kotlin) pour ce tutoriel sur notre dépôt GitHub afin que vous puissiez suivre facilement.

Conditions préalables

Pour pouvoir suivre ce tutoriel, vous aurez besoin de:

  • Android Studio 3.0 ou supérieur
  • Kotlin plugin 1.1.51 ou supérieur

1. Créer un projet Android Studio

Lancez Android Studio et créez un nouveau projet (vous pouvez le nommer BottomNavigationDemo) avec une activité vide appelée Activité principale. Assurez-vous également de vérifier le Inclure le support Kotlin case à cocher. 

2. Ajout de la vue de navigation inférieure

Pour commencer à utiliser BottomNavigationView dans votre projet, assurez-vous d'importer le support de conception ainsi que l'artefact de support Android. Ajoutez-les à votre module build.gradle fichier pour les importer. 

dépendances implémentation 'com.android.support:design:27.0.2'

Aussi, visitez votre res / layout / activlty_main.xml fichier à inclure BottomNavigationView widget. Ce fichier de mise en page comprend également un ContrainteLayout et un FrameLayout. Notez que le FrameLayout servira de conteneur ou d'espace réservé pour les différents fragments qui y seront placés chaque fois qu'un élément de menu est cliqué dans la barre de navigation inférieure. (Nous y reviendrons sous peu.)  

    

Ici nous avons créé un BottomNavigationView widget avec l'identifiant navigationView. La documentation officielle dit que:

BottomNavigationView représente une barre de navigation inférieure standard pour l'application. C'est une mise en œuvre de la navigation de fond de conception matérielle.
Les barres de navigation du bas permettent aux utilisateurs d'explorer et de basculer facilement entre les vues de niveau supérieur en un seul clic. Il doit être utilisé lorsque l'application comporte trois à cinq destinations de premier niveau..

Les attributs importants dont vous devriez prendre note ont été ajoutés à notre BottomNavigationView sont:

  • app: itemBackground: cet attribut définit l’arrière-plan de nos éléments de menu sur la ressource donnée. Dans notre cas, nous venons de lui donner une couleur de fond. 
  • application: itemIconTint: définit la teinte qui est appliquée aux icônes de nos éléments de menu.
  • app: itemTextColor: définit les couleurs à utiliser pour les différents états (normal, sélectionné, concentré, etc.) du texte de l'élément de menu.

Pour inclure les éléments de menu de la barre de navigation inférieure, nous pouvons utiliser l'attribut app: menu avec une valeur qui pointe vers un fichier de ressources de menu. 

Voici la res / menu / navigation.xml fichier de ressources de menu:

     

Ici nous avons défini un Menu en utilisant le 

 qui sert de conteneur pour les éléments de menu. Un  crée un Élément du menu, qui représente un seul élément dans un menu. Comme vous pouvez le voir, chacun  a un identifiant, une icône et un titre.

3. Initialisation des composants

Ensuite, nous allons initialiser une instance de BottomNavigationView. L'initialisation va se passer à l'intérieur onCreate () dans MainActivity.kt.

import android.os.Bundle import android.support.design.widget.BottomNavigationView import android.support.v7.app.AppCompatActivity, classe MainActivity: AppCompatActivity () lateinit var toolbar: ActionBar annule le plaisir de jouer surCreate (savedInstanceState: Bundle?) onCreate (savedInstanceState) setContentView (R.layout.activity_main) toolbar = supportActionBar !! val bottomNavigation: BottomNavigationView = findViewById (R.id.navigationView)

4. Test de l'application

Maintenant, nous pouvons exécuter l'application!

Comme vous pouvez le constater, notre barre de navigation inférieure s’affiche en bas de l’écran de l’application. Rien ne se passera si vous cliquez sur l'un des éléments de navigation, nous allons traiter cette partie dans la section suivante.. 

5. Configuration des événements de clic

Voyons maintenant comment configurer les événements de clic pour chacun des éléments de la barre de navigation inférieure. N'oubliez pas que cliquer sur un élément de celui-ci devrait amener l'utilisateur vers une nouvelle destination dans l'application..

Il y a un certain nombre de choses .navigation_artists -> return @ OnNavigationItemSelectedListener true false remplace fun surCréer (saveInstanceState: Bundle?) //… bottomNavigation.setOnNavigationItemSelectedListener (mOnNavigationItemSelectedListener) //… 

Ici nous avons appelé la méthode setOnNavigationItemSelectedListener. Voici ce qu'il fait selon la documentation officielle:

Définir un écouteur qui sera averti lorsqu'un élément de navigation inférieur est sélectionné.

Nous avons utilisé le quand expression pour effectuer différentes actions en fonction de l'élément de menu sur lequel l'utilisateur a cliqué; les identificateurs d'élément de menu servent de constantes pour l'élément quand expression. À la fin de chaque quand branche, nous revenons vrai.

Nous passons ensuite notre mOnNavigationItemSelectedListener auditeur à setOnNavigationItemSelectedListener () comme argument. 

Sachez qu’il existe une autre méthode similaire appelée setOnNavigationItemReselectedListener, qui sera notifié lorsque l'élément de navigation du bas actuellement sélectionné est resélectionné.

Ensuite, nous allons créer les différentes pages (ou fragments) pour chacun des éléments de menu dans le tiroir de navigation de sorte que lorsqu'un élément de menu est cliqué ou exploité, il affiche un fragment ou une page Android différents.. 

6. Créer les fragments (pages)

Nous allons commencer avec le SongsFragment.kt classe, et vous devriez suivre un processus similaire pour les deux classes de fragment restantes-AlbumsFragment.kt et ArtistesFragment.kt.

Voici mon ChansonsFragment.kt:

import android.os.Bundle import android.support.v4.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup classe SongsFragment: Fragment () override fun onCreateView (inflater: LayoutInflater, conteneur : ViewGroup ?, savedInstanceState: Bundle?): Voir? = inflater.inflate (R.layout.fragment_songs, conteneur, false) objet associé fun newInstance (): SongsFragment = SongsFragment ()

De plus, voici mon R.layout.fragment_songs

   

7. Lancement des fragments

Lorsque l'un des éléments de menu est cliqué, nous ouvrons le fragment correspondant et modifions également le titre de la barre d'actions.. 

private val mOnNavigationItemSelectedListener = BottomNavigationView.O R.id.navigation_albums -> toolbar.title = "Albums" val albumsFragment = AlbumsFragment.newInstance () openFragment (albumsFragment) return @ OnNavigationItemSelectedListener true R.id.navigation_artists -> 

Ici, nous utilisons une méthode appelée openFragment () qui utilise simplement le FragmentTransaction ajouter notre fragment à l'interface utilisateur. 

Maintenant, relancez le projet pour voir comment tout cela fonctionne!

Chaque fois que vous cliquez sur un élément du menu, l’utilisateur sera redirigé vers un nouveau fragment.. 

Notez que lorsque nous avons plus de quatre éléments de menu dans la barre de navigation inférieure-i.e. dans BottomNavigationView-alors le système Android active automatiquement le mode shift. Dans ce mode, lorsque l’un des éléments du menu est cliqué, les autres éléments situés à droite ou à gauche de celui-ci sont décalés.. 

8. Bonus: utilisation des modèles Android Studio

Maintenant que vous connaissez les API impliquées pour créer une barre de navigation inférieure à partir de zéro dans Android, je vais vous montrer un raccourci qui accélérera la prochaine fois. Vous pouvez simplement utiliser un modèle au lieu de coder une barre de navigation à partir de zéro. 

Android Studio fournit des modèles de code conformes aux meilleures pratiques de conception et de développement d'Android. Ces modèles de code existants (disponibles en Java et Kotlin) peuvent vous aider à démarrer rapidement votre projet. Un tel modèle peut être utilisé pour créer une barre de navigation inférieure. 

Pour utiliser cette fonctionnalité pratique dans un nouveau projet, lancez d'abord Android Studio.. 

Entrez le nom de l'application et cliquez sur le bouton Suivant bouton. Vous pouvez laisser les valeurs par défaut telles qu’elles sont dans Périphériques Android cibles dialogue. 

Clique le Suivant bouton à nouveau. 

dans le Ajouter une activité sur mobile dialogue, sélectionnez Activité de navigation inférieure. Clique le Suivant bouton à nouveau après cela. 

Dans la dernière boîte de dialogue, vous pouvez renommer l'activité ou modifier son nom ou son titre si vous le souhaitez. Enfin, cliquez sur le terminer bouton pour accepter toutes les configurations. 

Android Studio nous a maintenant aidés à créer un projet avec une activité de navigation par le bas. Vraiment cool!

Il est fortement conseillé d'explorer le code généré. 

Dans un projet Android Studio existant, pour utiliser ce modèle, accédez simplement à Fichier> Nouveau> Activité> Activité de navigation inférieure.

Notez que les modèles fournis avec Android Studio conviennent à la mise en page simple et à la création d'applications de base, mais si vous souhaitez vraiment lancer votre application, vous pouvez envisager certains des modèles disponibles sur Envato Market.. 

Ils permettent aux développeurs expérimentés de gagner beaucoup de temps en les aidant à réduire le coût de la création d'application à partir de zéro et en concentrant leurs talents sur les éléments uniques et personnalisés de la création d'une nouvelle application..

Conclusion

Dans ce didacticiel, vous avez appris à créer une barre de navigation inférieure dans Android à l'aide de la BottomNavigationView API à partir de zéro. Nous avons également exploré comment utiliser facilement et rapidement les modèles Android Studio pour créer une activité de navigation par le bas.. 

Je recommande fortement de consulter les directives officielles de conception de matériel pour la barre de navigation inférieure pour en savoir plus sur la manière de concevoir et d'utiliser correctement la barre de navigation inférieure dans Android.   

Pour en savoir plus sur le codage pour Android, consultez certains de nos autres cours et tutoriels ici sur Envato Tuts.+!