2012-11-29 2 views
1

J'ai un Activity qui génère quelques MotionEvent s (via MotionEvent.obtain()). Je souhaite transmettre ces événements tactiles/animés générés aux vues enfants de Activity. À partir des documents, Activity.onTouchEvent() est appelée uniquement lorsque l'une des vues enfant ne gère pas l'événement, ce qui signifie que je ne peux pas appeler cela pour transmettre l'événement tactile généré aux enfants.Est-il possible que mon activité envoie des événements tactiles/de mouvement générés à ses vues enfants?

Est-il possible d'envoyer un événement tactile généré du parent MainActivity à ses enfants de vue, de telle sorte qu'ils répondent normalement (par exemple, si une vue enfant a un ensemble OnClickListener, et j'envoyer un l'événement tactile généré vers le bas/vers le haut pour la vue enfant, j'aimerais que le OnClickListener soit appelé)?

Notez que je n'essaie pas d'envoyer des événements tactiles d'une activité à une autre, et que tout cela est dans ma propre application. De plus, mes appareils ne sont pas rootés, donc les solutions nécessitant une racine ne m'aident pas.

+1

un coup d'oeil à la [Instrumentation] (http://developer.android.com/reference/android/app/Instrumentation.html) classe aussi – FoamyGuy

+0

@FoamyGuy: Cool, ça a l'air d'être utile. Merci! – Cornstalks

Répondre

1

Je viens de comprendre. La solution consiste à utiliser Activity.dispatchTouchEvent(). Par exemple, les éléments suivants enregistré comme un événement click sur mon avis:

dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 200, 200, 0)); 
dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, 200, 200, 0)); 
Questions connexes