Attrape l'événement OnTouch par parent, manipule-le et passe chez les enfants

J'ai essayé de comprendre comment Android gérer l'événement tactile et a été un peu confus. De ce que je comprends, l'événement tactile est envoyé à la vue racine et transmis aux enfants. J'ai un FrameLayout qui est un conteneur pour Fragment . La première vue de fragment est une ScrollView , la seconde est une sorte de Gallery (HorizontalListView) et la dernière est également FrameLayout . Un seul fragment de la mise en page à chaque fois. Ce que je veux faire, c'est d'identifier les swipes utilisateur sur l'écran, pour l'utilisation de l'application. Je veux compter les swipes et faire quelque chose après un certain nombre de swipes.

J'ai essayé de mettre un OnTouchListener sur le FrameLayout supérieur, mais il n'est pas appelé quand l'enfant est ScrollView ou la Gallery . J'ai essayé de renvoyer des false et aussi true à la fin de onTouch , mais j'ai le même résultat – on ne l'appelle jamais.

  • Impossible de remplacer style switchStyle et NumberPicker dans Android
  • Empêchez la fermeture par le bouton de retour dans les formes de xamarin sur Android
  • Comment puis-je créer des groupes de ParseUsers en utilisant Parse.com?
  • OnTouch donne des points de contact étranges Android
  • Dans Android; Est-il préférable d'appliquer un OnClickListener ou d'utiliser Android: onClick?
  • Emplacement personnalisé du magasin de stockage sur une machine locale avec App Engine
  • Comment puis-je le faire? Je veux juste "traiter de manière transparente" les événements tactiles et les passer comme si je ne les ai même pas touchés.

  • Utiliser RecyclerVoir à l'intérieur de ScrollView avec hauteur de l'élément Recycler flexible
  • Supprimer toutes les tables de la base de données sqlite
  • Paire par programme un périphérique Bluetooth sans que l'utilisateur n'ait pénétré
  • La meilleure façon pour le service qui démarre Activité pour communiquer avec lui
  • Erreur dans le fichier pom dans le projet Maven après l'importation dans Eclipse
  • Fragment sans défilement dans un ViewPager à l'intérieur de CoordinatorLayout
  • One Solution collect form web for “Attrape l'événement OnTouch par parent, manipule-le et passe chez les enfants”

    Je crois comprendre que cela va dans l'autre sens. Les visionnages enfants donnent leur événement déclenché en premier (sorte de). La vue de la racine est celle de dispatchTouchEvent() , qui propage l'événement jusqu'à l' onTouchEvent() des enfants onTouchEvent() , puis, en fonction de leur retour true ou false, on appelle onTouchEvent() du parent.

    La solution normale pour intercepter des choses comme celle-ci est de remplacer dispatchTouchEvent(MotionEvent ev) dans son activité comme dispatchTouchEvent(MotionEvent ev) :

     @Override public boolean dispatchTouchEvent (MotionEvent ev) { // Do your calcluations return super.dispatchTouchEvent(ev); } 

    La documentation pour celle-ci est ici . Notez que vous pouvez également remplacer cette méthode dans n'importe quel groupe ViewGroup (comme FrameLayout , etc.)

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.