android android-layout click touch ontouchevent

android - Atrapa el evento onTouch por parte de los padres, lo maneja y pasa a los niños



android-layout click (1)

Mi entendimiento es que en realidad va en otra dirección. Las vistas de los niños hacen que su evento se active primero (más o menos). La vista raíz se llama dispatchTouchEvent() , que propaga el evento a la onTouchEvent() los niños, y luego, dependiendo de si devuelven verdadero o falso, se onTouchEvent() al onTouchEvent() del padre.

La solución normal para interceptar cosas como esta es anular dispatchTouchEvent(MotionEvent ev) en la actividad de una persona de esta manera:

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

La documentación para este está here . Tenga en cuenta que también puede anular ese método en cualquier grupo de ViewGroup (como un FrameLayout , etc.)

Traté de entender cómo manejaba Android el evento táctil y me confundí un poco. Por lo que entiendo, el evento táctil se envía a la vista raíz y se transmite a los niños. Tengo un FrameLayout que es un contenedor para Fragment . La primera vista de fragmentos es ScrollView , la segunda es algún tipo de Gallery (HorizontalListView) y la última también es FrameLayout . Sólo un fragmento en el diseño cada vez. Lo que quiero hacer es identificar los movimientos del usuario en la pantalla, para el uso de la aplicación. Quiero contar los golpes y hacer algo después de un número de golpes.

Intenté colocar un OnTouchListener en el FrameLayout superior, pero no se llama cuando el elemento secundario es ScrollView o Gallery . Intenté devolver false y también true al final de onTouch , pero obtengo el mismo resultado: nunca se me ha llamado.

¿Cómo puedo hacerlo? Solo quiero "de forma transparente" manejar los eventos táctiles y transmitirlos como si ni siquiera los hubiera tocado.