MDC-111 Android: intégrer des composants Material à votre codebase (Kotlin)

1. Introduction

logo_components_color_2x_web_96dp.png

Material Components (MDC) aide les développeurs à implémenter Material Design. Conçu par une équipe d'ingénieurs et de spécialistes de l'expérience utilisateur chez Google, MDC propose des dizaines de composants d'interface utilisateur élégants et fonctionnels. Il est disponible pour Android, iOS, le Web et Flutter.material.io/develop.

Material Components pour Android (MDC Android) n'est pas un nouveau système ni un nouveau framework qui nécessite un changement de paradigme dans votre application. MDC Android repose sur les classes et les API que vous connaissez déjà dans Android, comme les boutons et les champs de texte AppCompat. Les composants fournis par MDC Android peuvent être utilisés si nécessaire et améliorent immédiatement la conception de votre application existante.

Objectifs de l'atelier

Dans cet atelier de programmation, vous allez remplacer certains composants existants dans un formulaire par de nouveaux composants créés par MDC.

Composants MDC-Android utilisés dans cet atelier de programmation

  • Champs de texte
  • Boutons
  • Menus

Prérequis

  • Connaissances de base sur le développement Android
  • Android Studio (téléchargez-le ici si vous ne l'avez pas déjà fait)
  • Un émulateur ou un appareil Android (disponible via Android Studio)
  • L'exemple de code (voir l'étape suivante)

Comment évalueriez-vous votre niveau d'expérience en création d'applications Android ?

<ph type="x-smartling-placeholder"></ph> Débutant Intermédiaire Expert
.

2. Configurer l'environnement de développement

Télécharger l'application de départ de l'atelier de programmation

L'application de départ se trouve dans le répertoire material-components-android-codelabs-111-starter/kotlin. Assurez-vous d'accéder à ce répertoire avec la commande cd avant de commencer.

… ou cloner l'atelier depuis GitHub

Pour cloner cet atelier de programmation à partir de GitHub, exécutez les commandes suivantes :

git clone https://github.com/material-components/material-components-android-codelabs
cd material-components-android-codelabs/
git checkout 111-starter

Charger le code de départ dans Android Studio

  1. Une fois l'assistant de configuration terminé et la fenêtre de bienvenue dans Android Studio affichée, cliquez sur Open an existing Android Studio project (Ouvrir un projet Android Studio existant). Accédez au répertoire dans lequel vous avez installé l'exemple de code, puis sélectionnez kotlin -> shipping (ou recherchez shipping sur votre ordinateur) pour ouvrir le projet "Shipping".
  2. Attendez qu'Android Studio crée et synchronise le projet (voir les indicateurs d'activité situés en bas de la fenêtre Android Studio).
  3. À ce stade, Android Studio peut générer des erreurs de compilation, car vous ne disposez pas du SDK Android ni de certains outils de compilation, comme celui présenté ci-dessous. Suivez les instructions fournies dans Android Studio pour installer/mettre à jour ces éléments et synchroniser votre projet.

2wEZ1kuSFwiRvi_vYXnYfwoQ5J79OVBi1SL6044ETje5cDT2rUHGy8ExjGxlBWlWuNUMf5tkLRUrr2_bz_0Im_JDvLyC-X-tNmBJvKUgsn8T4d11A1cq0ItqQl2n6DJrYKY-dEyRdw

Exécuter l'application de départ

  1. Assurez-vous que la configuration de compilation située à gauche du bouton Run/Play (Exécuter/Lire) est app.
  2. Appuyez sur le bouton vert pour créer et exécuter l'application.
  3. Dans la fenêtre Select Deployment Target (Sélectionner une cible de déploiement), si un appareil Android figure déjà parmi ceux disponibles, passez à l'étape 8. Sinon, cliquez sur Create New Virtual Device (Créer un appareil virtuel).
  4. Sur l'écran Select Hardware (Sélectionner le matériel), choisissez un téléphone (par exemple, un Pixel 2), puis cliquez sur Next (Suivant).
  5. Sur l'écran System Image (Image système), sélectionnez une version récente d'Android (de préférence le niveau d'API le plus élevé). Sinon, cliquez sur le lien Télécharger qui s'affiche, puis procédez au téléchargement.
  6. Cliquez sur Next (Suivant).
  7. Sur l'écran Android Virtual Device (AVD) (Appareil virtuel Android), laissez les paramètres tels quels et cliquez sur Finish (Terminer).
  8. Sélectionnez un appareil Android dans la boîte de dialogue de la cible de déploiement.
  9. Cliquez sur OK.
  10. Android Studio crée l'application, la déploie et l'ouvre automatiquement sur l'appareil cible.

Opération réussie. L'application et son format doivent s'afficher.

dba8e6132a12da58.png

3. Mettre à jour les champs de texte

Les champs de texte Material Design présentent un gain de convivialité important par rapport aux champs de texte brut. Lorsque vous définissez la zone d'appel avec un contour ou un remplissage de l'arrière-plan, les utilisateurs sont plus susceptibles d'interagir avec votre formulaire ou d'identifier des champs de texte dans un contenu plus complexe.

Importer MDC-Android

Accédez au fichier build.gradle du module app et assurez-vous que le bloc dependencies inclut une dépendance sur MDC Android:

api 'com.google.android.material:material:1.1.0-alpha05'

Remplacer les styles de champ de texte

Dans shipping_info_activity.xml, ajoutez le style suivant à tous les composants XML TextInputLayout:

shipping_info_activity.xml

style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"

Chaque TextInputLayout doit se présenter comme suit:

shipping_info_activity.xml

<com.google.android.material.textfield.TextInputLayout
   android:id="@+id/name_text_input"
   style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   app:errorEnabled="true">

   <com.google.android.material.textfield.TextInputEditText
       android:id="@+id/name_edit_text"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:hint="@string/label_name" />
</com.google.android.material.textfield.TextInputLayout>

Compilez et exécutez:

824c2b33592b2c7e.png

Les champs de texte ont tous été mis à jour pour utiliser les nouvelles conceptions de MDC.

Ajouter une erreur

Les champs de texte MDC intègrent une présentation des erreurs. MDC ajoute du texte en rouge sous votre champ de texte et met à jour les décorations en rouge.

Dans ShippingInfoActivity.kt, mettez à jour onCreate() pour vérifier le texte saisi et définir les erreurs le cas échéant. Le résultat doit se présenter comme suit:

ShippingInfoActivity.kt

override fun onCreate(savedInstanceState: Bundle?) {
   super.onCreate(savedInstanceState)
   setContentView(R.layout.shipping_info_activity)

   val rootView = findViewById<View>(android.R.id.content)

   val textInputLayouts = Utils.findViewsWithType(
           rootView, TextInputLayout::class.java)

   save_button.setOnClickListener {
       var noErrors = true
       for (textInputLayout in textInputLayouts) {
           val editTextString = textInputLayout.editText!!.text.toString()
           if (editTextString.isEmpty()) {
               textInputLayout.error = resources.getString(R.string.error_string)
               noErrors = false
           } else {
               textInputLayout.error = null
           }
       }

       if (noErrors) {
           // All fields are valid!
       }
   }
}

Compilez et exécutez. Appuyez sur ENREGISTRER, mais laissez au moins un champ de texte vide:

ef2a846d08f2780d.png

Les champs de texte qui sont vides sont rouges et, en dessous, un texte d'erreur.

4. Mettre à jour le bouton

MDC comporte des boutons avec les éléments suivants:

  • Ondulations
  • Coins arrondis
  • Compatibilité avec la thématisation
  • Une mise en page et une typographie parfaites au pixel
  • Reposant sur AppCompatButton (la classe de boutons Android standard), vous savez comment les utiliser dans votre code.

Remplacer la classe du bouton (facultatif)

Par défaut, la bibliothèque Material remplace automatiquement les boutons standards par des boutons MDC. Cependant, vous pouvez éventuellement remplacer toutes les références à Button par MaterialButton afin d'accéder à des méthodes supplémentaires qui ne sont disponibles que dans un MaterialButton, comme modifier l'arrondi d'angle. MDC Buttons est un composant simple prêt à l'emploi. Il vous suffit de remplacer le nom du composant XML Button par MaterialButton et d'appliquer le style MaterialButton par défaut à MaterialButton.

Dans shipping_info_activity.xml, remplacez votre bouton:

shipping_info_activity.xml

<Button
   android:id="@+id/save_button"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="end"
   android:layout_marginTop="16dp"
   android:text="@string/label_save" />

À :

shipping_info_activity.xml

<com.google.android.material.button.MaterialButton
   android:id="@+id/save_button"
   style="@style/Widget.MaterialComponents.Button"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="end"
   android:layout_marginTop="16dp"
   android:text="@string/label_save" />

Compilez et exécutez:

824c2b33592b2c7e.png

5. Ajouter une carte

MaterialCardView est un composant basé sur CardView avec:

  • Corriger l'élévation et le style
  • Attributs de la couleur et de l'épaisseur du trait

Encapsuler du contenu dans une fiche

Encapsulez votre LinearLayout contenant votre contenu dans shipping_info_activity.xml avec un composant MaterialCardView, comme suit:

shipping_info_activity.xml

<com.google.android.material.card.MaterialCardView
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_margin="16dp"
   app:contentPadding="16dp">


   <!-- LinearLayout goes here -->


</com.google.android.material.card.MaterialCardView>

Compilez et exécutez. L'intégralité du formulaire doit être enveloppée dans une fiche:

75c86ab9fa395e3c.png

Le composant Material Card View est un moyen familier, mais récent, d'encapsuler facilement votre contenu dans une carte.

6. Récapitulatif

Vous avez remplacé certains composants courants pour afficher immédiatement une valeur: les champs de texte, les boutons et les fiches, et vous n'avez pas eu à remanier entièrement votre application. D'autres composants peuvent également faire une grande différence, tels que la barre d'application supérieure et TabLayout.

Étapes suivantes

Pour découvrir encore plus de composants de MDC-Android, consultez le catalogue de widgets Android.

La réalisation de cet atelier de programmation m'a demandé un temps et des efforts raisonnables

Tout à fait d'accord D'accord Ni d'accord, ni pas d'accord Pas d'accord Pas du tout d'accord

Je souhaite continuer à utiliser Material Components

<ph type="x-smartling-placeholder"></ph> Tout à fait d'accord D'accord Sans opinion Pas d'accord Pas du tout d'accord
.