class ChildView extends View {
public void setGestureDetector (GestureDetector g)
{
gesture = g;
}
@Override
public boolean onTouchEvent (....)
{
return gesture.onTouchEvent (....); // touch event will dispatch to gesture
}
}
class ParentView extends View implements GestureDetector.OnGestureListener {
gesture = new GestureDetector (this);
child = new ChildView (...);
child.setGestureDetector (gesture);
@Override
public boolean onTouchEvent (..)
{
// handle your parent touch event here
}
public boolean onDown (...)
{
return true;
}
public boolean fling (...)
{
// here to handle child view fling
}
}
Ce code est peso (pas réel android java) pour vous montrer le concept à utiliser GestureDetector, vous pouvez traiter tous les événements de votre point de vue des enfants dans votre vue parent. Comme je l'ai testé sur mon téléphone android, onTouchEvent dans ChildView ne reconnaissait pas ACTION_UP très bien, donc même si vous balayez votre vue enfant, parfois fling ne fonctionnera pas (cela dépend de ACTION_UP).
Donc, si vous voulez écrire plus précis swipe sur votre vue enfant, mieux écrire votre owen Gesture Détecte la classe, et dans votre ChildView, vous pouvez le faire -
float oldX;
float distanceX;
public boolean onTouchEvent (MotionEvent event...)
{
if (event.getAction == MotionEvent.ACTION_DOWN) {
// handle down
oldX = event.getX();
}
if (event.getAction == MotionEvent.ACTION_MOVE {
// handle move
distanceX = event.getX() - oldX; // more accurate
gesture.onSwipe (distanceX); // your own gesture class
}
}
Je pense que si l'événement tactile est vue enfant, la vue parente ne sera jamais notifiée. Mieux vaut donc utiliser GestureDetector, à l'intérieur de votre vue enfant, onTouchEvent, envoyer l'événement à un geste, et le traiter sur la vue parente. – Tom
J'utilise GestureDetector dans les deux vue la partie de défilement est faite sur la vue parent et c'est OK.but je veux faire quelque chose sur la vue enfant. Je renvoie false dans la méthode onDown dans child view.then scroll parent travaille et touche l'événement sur la vue enfant dose ne fonctionne pas – Sanath