¿Cómo se entregan los eventos de toque de Android?

No estoy preguntando cómo manejar eventos táctiles, pero ¿qué está pasando entre bastidores? Si hay varios widgets anidados, ¿en qué orden se ven los eventos? ¿Tiene el desarrollador algún control sobre él? Idealmente me gustaría un documento sobre el tema.

Desde el punto de vista de la actividad:

Los eventos de toque se entregan primero a Activity.dispatchTouchEvent. Es donde usted puede cogerlos primero.

Aquí se despachan a Window, donde atraviesan la jerarquía View, en el orden en que los Widgets que se dibujan en último lugar (encima de otros widgets) tienen la oportunidad de procesar el tacto en View.onTouchEvent primero. Si alguna vista devuelve true en onTouchEvent, entonces stop de recorrido y otras vistas no reciben evento táctil.

Finalmente, si no se consume Vista, se entrega a Activity.onTouchEvent.

Eso es todo tu control. Y es lógico que lo que ves dibujado en la parte superior de otra cosa, tiene oportunidad de procesar el evento táctil antes de algo dibujado por debajo de él.

  • ¿Hay alguna manera de detectar si la barra de notificación ha sido borrada?
  • ¿Cómo puedo realizar el procesamiento de eventos sin bloqueo en Android?
  • Cómo enviar evento de puntero en Android
  • Android: ViewPager y HorizontalScrollVIew
  • Evento táctil: cuando se quita el dedo del elemento
  • Detectar cuando usable conectado / desconectado desde / hacia el teléfono Android
  • Android: intercepte y transmita todos los eventos táctiles
  • Hacer emergente la tecla pulsada en un teclado personalizado
  • Configuración de TextView visible desde otro hilo o BeginInvoke en Android
  • Actualizar calendario instances.end vía events.dtend
  • android cómo escribir onclick evento de edittext
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.