Mécanisme de traitement des événements basé sur l'écoute
Introduction à cette section :
Dans le chapitre 2, nous apprenons les contrôles de l'interface utilisateur Android. Nous pouvons utiliser ces contrôles pour former une belle interface, mais ce n'est qu'une interface ; étape Il est temps de commencer à apprendre la logique et la mise en œuvre commerciale. Ce chapitre explique le mécanisme de traitement des événements d'Android ! Qu’est-ce que le mécanisme de gestion des événements ? Donnez un exemple Un exemple simple, comme en cliquant sur un bouton, nous envoyons une demande de connexion au serveur ! Bien sûr, il existe bien plus que ce type de mécanisme de traitement d’événements dans Android. Par exemple, lorsqu'une sélection se produit à l'écran, nous cliquons sur une certaine zone de l'écran... Pour faire simple, le mécanisme de traitement des événements est que lorsque nous interagissons avec l'interface utilisateur, nous ajoutons simplement quelques petites actions en coulisses. ! Dans cette section nous présenterons le plus fréquemment utilisé : le mécanisme de traitement d’événements basé sur l’écoute !
1. Modèle de mécanisme de traitement du temps basé sur la surveillance :
Diagramme du modèle de processus :
Description textuelle :
Le mécanisme de surveillance des événements se compose de source d'événement, événement, L'écouteur d'événement se compose de trois types d'objets Le flux de traitement est le suivant :Étape 1 :Définir un écouteur pour une source d'événement (composant) afin de surveiller les opérations de l'utilisateurÉtape 2 :L'opération de l'utilisateur déclenche la surveillance de la source d'événement Étape 3 :Générer l'objet événement correspondantÉtape 4 :Passez cet objet source d'événement en tant que paramètre à l'écouteur d'événementétape 5 :Paire d'écouteurs d'événement L'objet événement est jugé et le processeur d'événements correspondant (méthode de traitement d'événements correspondante) est exécuté
Résumé :
Le mécanisme d'écoute d'événements est un mécanisme de traitement d'événements délégué , le traitement des événements de la source d'événement (composant) est délégué aux écouteurs d'événement Lorsqu'un événement spécifié se produit dans la source d'événement, l'écouteur d'événement spécifié est notifié et l'opération correspondante est effectuée
2. Cinq formes d'utilisation différentes :
Nous utilisons le. suivant : Un programme qui demande des informations sur Toast en cliquant simplement sur un bouton Utilisez cinq formulaires différents pour y parvenir !
Rendu :
1) Utiliser directement des classes internes anonymes
La plus couramment utilisée : directement setXxxListener puis réécrire la méthode à l'intérieur ; Habituellement, il est utilisé une fois temporairement et la réutilisation n’est pas élevée !
Le code d'implémentation est le suivant : MainActivity.java :
importer android.os.Bundle ;
importer android.view.View ;
importer android.view.View.OnClickListener ;
importer android.widget.Button ;
importer android.widget.Toast ;
importer android.app.Activity ;
classe publique MainActivity étend l'activité {
bouton privé btnshow ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnshow = (Bouton) findViewById(R.id.btnshow);
btnshow.setOnClickListener(new OnClickListener() {
//重写点击事件的处理方法onClick()
@ Remplacer
public void onClick(View v) {
//显示Toast信息
Toast.makeText(getApplicationContext(), "你点击了按钮", Toast.LENGTH_SHORT).show();
}
} );
}
}
2) L'utilisation des classes internes
est différente de la classe interne anonyme ci-dessus ! Avantages d'utilisation : Il peut être réutilisé dans cette classe et peut accéder directement à tous les composants d'interface des classes externes !
Le code d'implémentation est le suivant : MainActivity.java :
importer android.view.View;
public class MainActivity extends Activity {
private Button btnshow;
@Override
protected void onCreate(B undle savingInstanceState) {
super.onCreate (savedInstanceState
setContentView(R); .layout.activity_main);
btnshow = (Button) findViewById(R.id.btnshow);
//Nouveau directement un objet de classe interne en tant que paramètre
btnshow .setOnClickListener(new BtnClickListener()); 🎜> @Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Le bouton a été cliqué", Toast.LENGTH_SHORT).show();
}
3) Utiliser des classes externes :
consiste à créer un autre fichier Java pour gérer les événements. Ce formulaire est moins utilisé ! Parce que les classes externes ne peuvent pas accéder directement à l'interface utilisateur Les composants de la classe doivent être transmis via la méthode de construction ; le résultat est que le code n'est pas assez concis !
ps : Afin de démontrer le passage des paramètres, TextView est utilisé ici à la place de l'invite Toast !
Le code d'implémentation est le suivant : MyClick.java :
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView
//Passe la zone de texte en paramètre.
public MyClick(TextView txt)
{
textshow = txt;
}
@Override
public void onClick(View v) {
//Définissez le texte affiché dans la zone de texte après avoir cliqué sur
textshow.setText("Le bouton a été cliqué !"
} }
}
);
MainActivity.java
importer android.os.Bundle ;
importer android.widget.Button ;
importer android.widget.TextView ;
importer android.app.Activity ;
classe publique MainActivity étend l'activité {
bouton privé btnshow ;
privé TextView txtshow ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnshow = (Bouton) findViewById(R.id.btnshow);
txtshow = (TextView) findViewById(R.id.textshow);
//直接new一个外部类,并把TextView作为参数传入
btnshow.setOnClickListener(new MyClick(txtshow));
}
}
4) Utiliser Activity directement comme écouteur d'événement
Laissez simplement la classe Activity implémenter l'interface d'écoute d'événement XxxListener, et définissez et remplacez la méthode de gestionnaire d'événement correspondante dans Activity Par exemple : Actitity implémente l'interface OnClickListener, remplace la méthode onClick(view) et ajoute l'objet d'écoute d'événement pour certains composants. Quand, il suffit de setXxx.Listener(this) directement
Le code d'implémentation est le suivant : MainActivity.java :
importer android.os.Bundle ;
importer android.view.View
importer android.view.OnClickListener ;
importer android.app.Activity ;
//Laissez la méthode Activity implémenter l'interface OnClickListener
public class MainActivity extends Activity Implements OnClickListener{
private Button btnshow;
@ Override
protected void onCreate(Bundle savingInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
.btnshow
//Écrivez ceci directement
btnshow.setOnClickListener(this); 🎜> }
//Réécrivez la méthode abstraite dans l'interface
@Override
public void onClick (View v) {
Toast.makeText(getApplicationContext(), "Bouton cliqué", Toast.LENGTH_SHORT ).montrer();
5) Se lier directement à la balise :
consiste à définir directement une méthode de traitement d'événement dans l'activité correspondante dans le fichier de mise en page XML Ex: la source public void myClick(View source) correspond à la source de l'événement (composant) Puis dans le fichier de layout correspondant au composant pour déclencher l'événement, définissez un attribut : onclick = "myclick"
Le code d'implémentation est le suivant : MainActivity.java:
importer android.app.Activity;
importer android.os.Bundle
public; class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savingInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R . Layout.activity_main
}
); // Personnalisez une méthode, passez un composant View en paramètre
Public Void MyClick (View Source)
{
Toast.Maketext (getApplication Context ( ), "Le bouton a été cliqué", Toast.LENGTH_SHORT .show();
}
}
fichier de mise en page main.xml :
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height=" match_parent"
android:orientation="vertical" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:onClick="myclick"/>
</LinearLayout>
Résumé de cette section
Cette section la présente pour vous Le mécanisme de traitement des événements dans Android est utilisé. L'exemple est l'événement de clic onClickListener. Bien sûr, il existe d'autres événements en plus, comme onItemClickListener. Tout ce qui nécessite setXxxListener est essentiellement basé sur la surveillance des événements ! De plus, les cinq méthodes les plus couramment utilisées sont : 1, 2, 3 et 5, selon la situation spécifique~