Code de gestion des événements

 L'utilisation de classes anonymes pour les codes de gestion des événements devrait résoudre un grand nombre de problèmes de programmation, mais les classes anonymes ne sont pas le seul moyen de gérer les événements. Nous allons examiner deux autres façons de procéder.Pour cet exercice, nous allons créer un nouveau projet. Utilisez les informations du tableau 5-4 pour créer le projet.

Table 5-4. Project Information

Application name

EventHandling1

Company domain

Leave the default

Project location

Leave the default

Form factor

Phone and tablet only

Minimum SDK

API 23 Marshmallow

Type of activity

Empty

Activity name

MainActivity

Layout name

activity_main

 Ajoutez trois vues de bouton à la mise en page. Dans cet exemple, ils sont alignés verticalement et sont obligés de rester au centre de l'écran. Le moyen le plus simple de réaliser cette présentation est de positionner les boutons à la main, en se rapprochant de l'emplacement souhaité pour l'exécution. Ensuite, sélectionnez-les tous en cliquant sur les trois boutons et en les faisant glisser, puis utilisez les outils de l'inspecteur de contraintes pour affiner l'alignement et les contraintes.Vous pouvez utiliser le bouton «Pack» (comme illustré à la figure 5-9) pour répartir les vues verticalement. Après cela, utilisez les contraintes «Inférer» pour aligner automatiquement les vues les unes sur les autres et sur le conteneur. 

Figure 5-9. Pack vertically

Figure 5-10 montre à quoi pourrait ressembler la mise en page.

Figure 5-10. activity_main in design view for EventHandling1

Les identifiants des vues de bouton ont été modifiés en boutons1, bouton2 et bouton3 en conséquence, afin que nous puissions nous y référer plus tard dans le code. Vous pouvez utiliser d'autres noms, bien sûr. Les identifiants de vue sont simplement des identifiants que vous, le programmeur, déciderez en définitive.Mais pour ce projet, ils portent le même nom. Le Listing 5-6 montre le code XML de notre mise en page. 

Listing 5-12. activity_main.xml in Text View

  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <android.support.constraint.ConstraintLayout
  4.  
  5. xmlns:android="http://schemas.android.com/apk/res/android"
  6. xmlns:app="http://schemas.android.com/apk/res-auto"
  7. xmlns:tools="http://schemas.android.com/tools"
  8.  
  9. android:layout_width="match_parent"
  10. android:layout_height="match_parent"
  11.  
  12. tools:context="com.thelogbox.eventhandling1.MainActivity">
  13.  
  14. <Button
  15.  
  16. android:id="@+id/button1"
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content"
  19. android:layout_marginTop="48dp"
  20. android:text="1"
  21.  
  22. app:layout_constraintEnd_toEndOf="parent"
  23. app:layout_constraintStart_toStartOf="parent"
  24. app:layout_constraintTop_toTopOf="parent"/>
  25.  
  26. <Button
  27.  
  28. android:id="@+id/button2"
  29. android:layout_width="wrap_content"
  30. android:layout_height="wrap_content"
  31. android:layout_marginTop="4dp"
  32. android:text="2"
  33.  
  34. app:layout_constraintStart_toStartOf="@+id/button1"
  35. app:layout_constraintTop_toBottomOf="@+id/button1"/>
  36.  
  37. <Button
  38.  
  39. android:id="@+id/button3"
  40. android:layout_width="wrap_content"
  41. android:layout_height="wrap_content"
  42. android:layout_marginTop="12dp"
  43. android:text="3"
  44.  
  45. app:layout_constraintStart_toStartOf="@+id/button2"
  46. app:layout_constraintTop_toBottomOf="@+id/button2"/> </android.support.constraint.ConstraintLayout>