Quelle est la signification de la valeur booléenne retourné à partir d'une méthode de gestion d'événements dans Android
Dans android, la plupart des méthodes d'écouteur d'événement renvoie une valeur booléenne. Quelle est la valeur true/false signifie ? quel sera le résultat pour la sous-suite des événements ?
class MyTouchListener implements OnTouchListener {
@Override
public boolean onTouch(View v, MotionEvent event) {
logView.showEvent(event);
return true;
}
}
Quant à l'exemple ci-dessus, si le retour de vrai dans onTouch méthode,j'ai trouvé tous les événements tactiles(BAS,HAUT,DÉPLACER,etc) a été capturée selon mon logView. Au contraire,si le retour de faux, onely l'événement été capturé. Donc, il nous a semblé que return false va empêcher l'événement de se propager. Suis-je la corriger ?
En outre, dans un OnGestureListener, de nombreuses méthodes ont pour retourner une valeur booléenne trop. Ont-ils le même sens ?
InformationsquelleAutor John Wang | 2010-09-20
Vous devez vous connecter pour publier un commentaire.
Si vous retournez
true
à partir d'unACTION_DOWN
événement qui vous intéresse dans la suite des événements dans son geste. Un "geste" dans ce cas signifie que tous les événements jusqu'à la finaleACTION_UP
ouACTION_CANCEL
. De retourfalse
à partir d'unACTION_DOWN
signifie que vous ne voulez pas que l'événement et d'autres points de vue auront l'occasion de le manipuler. Si vous avez le chevauchement des points de vue, cela peut être un frère ou d'une vue. Si non il vont remonter vers le parent.À partir de la documentation : http://developer.android.com/reference/android/view/View.OnTouchListener.html#onTouch(android.view.View, android.vue.MotionEvent)
"True si l'auditeur a consommé de l'événement, false sinon."
Si vous retourner la valeur true, l'événement est traité. Si la valeur est false, il passera à la prochaine couche.
La valeur booléenne qui détermine si l'événement est consommé ou non.
Oui, vous avez raison. Si vous retourne la valeur false, la prochaine auditeur gère l'événement. Si elle retourne true, l'événement est consommée par votre auditeur et ne sont pas envoyés à la méthode suivante.
true
signifie que vous avez consommé de l'événement et que vous souhaitez le reste des événements dans le geste - les autres auditeurs et les points de vue ne recevrez pas les événements.false
signifie que laisser quelqu'un d'autre gérer l'événement. La réalité est un peu plus précis que ça de bien; voir ma réponse.Tous la réponse ci-dessus est correcte, mais le résultat est différent, c'est si la Vue est
clickable
ou pasclickable
Exemple, j'ai un
LinearLayout
contient 1Button
et 1TextView
comme ceEn Activité, j'ai un code comme
Cas 1
Linear onTouch return **FALSE**
,Button onTouch return **FALSE**
,TextView onTouch return **FALSE**
Cliquez sur le Bouton
Cliquez sur TextView
Cliquez sur LinearLayout
Cas 2
Linear onTouch return **FALSE**
,Button onTouch return **TRUE**
,TextView onTouch return **TRUE**
Cliquez sur le Bouton
Cliquez sur TextView
Cliquez sur LinearLayout
Cas 3
Linear onTouch return **TRUE**
,Button onTouch return **FALSE**
,TextView onTouch return **FALSE**
Cliquez sur le Bouton
Cliquez sur TextView
Cliquez sur LinearLayout
Remarque
TextView
estnot clickable
, il deviendra cliquable si l'onandroid:clickable="true"
en xml OU lorsque nous avons mis entextView.setOnClickListener(...)
event MOVE
peut appeler plus de mon journal (il base sur la façon dont vous appuyez sur)Sommaire
onTouch
retourtrue
ou la vue estclickable
Vue recevrez tous
onTouchEvent
onTouch
retourfalse
et la vue n'est pasclickable
, vue pas recevoir onTouchEvent (c'est parent peut recevoir)Espoir aide
DÉMO
J'ai perdu presque un jour dans le dépannage, la encore, je sais que mon onTouch fonction est appelée 2 fois lors de l'utilisation de vrai et 1 fois lors de l'utilisation de faux.
event.getAction()
parce que si vous retournezfalse
sur ACTION_DOWN événement, ACTION_UP événement est ignoré par l'auditeurDe Android-document:
Note: Android va appeler les gestionnaires d'événements de la première et les gestionnaires par défaut à partir de la définition de la classe de seconde. En tant que telle, retourner true à partir de ces écouteurs d'événement va arrêter la propagation de l'événement à d'autres écouteurs d'événement et permet également de bloquer la fonction de rappel pour le gestionnaire d'événement par défaut dans la Vue. Alors, soyez certain que vous voulez mettre fin à l'événement lorsque vous retourner la valeur true.