Quelle est la différence entre la variable onTouchEvent
d'une vue:
public class MyCustomView extends View {
// THIS :
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
}
et sa onTouchListener
:
MyCustomView myView = (MyCustomView) findViewById(R.id.customview);
myView.setOnTouchListener(new View.OnTouchListener() {
@Override
public void onClick(View arg0) {
// do something
}
});
ou
public class MyCustomView extends View {
public MyCustomView(Context context, AttributeSet attrs) {
// THIS :
setOnTouchListener(new View.OnTouchListener() {
@Override
public void onClick(View arg0) {
// do something
}
});
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
}
Si ces deux sont différents,
Avons-nous besoin de mettre en œuvre les deux?
Lequel est invoqué en premier?
Si j'ai des fonctionnalités de défilement et de zoom, dois-je les implémenter dans onTouchEvent
ou onTouchListener
?
La réponse de LeeYiHong est correcte, et l’autre chose très importante est ce qui est écrit sur http://developer.Android.com/reference/Android/view/View.OnTouchListener.html :
Le callback
[i.e. View.OnTouchListener -> onTouch(View v, MotionEvent event)]
sera appelé avant que l'événement tactile[i.e. onTouchEvent(MotionEvent)]
soit donné à la vue.
Je ne sais pas si vous avez trouvé votre réponse. Mais j'ai trouvé liées questions similaires aux vôtres.
"onTouch fonctionne où vous voulez (que ce soit en activité ou en mode vue) tant que vous avez déclaré l'interface et que vous avez mis l'écouteur à droite! D'autre part, onTouchEvent ne fonctionne que dans une vue!"
Pour les fonctionnalités de défilement et de zoom, je suppose que onTouchListener suffira à compléter les deux fonctions (et bien d’autres encore, comme la rotation, etc.).