OnTouchListener de una vista vs onTouchEvent

¿Cuál es la diferencia entre el onTouchEvent una vista:

 public class MyCustomView extends View { // THIS : @Override public boolean onTouchEvent(MotionEvent event) { return super.onTouchEvent(event); } } 

Y su onTouchListener :

 MyCustomView myView = (MyCustomView) findViewById(R.id.customview); myView.setOnTouchListener(new View.OnTouchListener() { @Override public void onClick(View arg0) { // do something } }); 

o

 public class MyCustomView extends View { public MyCustomView(Context context, AttributeSet attrs) { // THIS : setOnTouchListener(new View.OnTouchListener() { @Override public void onClick(View arg0) { // do something } }); } @Override public boolean onTouchEvent(MotionEvent event) { return super.onTouchEvent(event); } } 

Si esto es diferente,
¿Necesitamos implementar ambos?
¿Cuál es invocado primero?

Si tengo alguna funcionalidad de desplazamiento y zoom, ¿debería implementarlas dentro de onTouchEvent o onTouchListener ?

Respuesta de LeeYiHong es correcta, y la otra cosa muy importante es lo que está escrito en http://developer.android.com/reference/android/view/View.OnTouchListener.html :

Se [ie View.OnTouchListener -> onTouch(View v, MotionEvent event)] devolución de llamada [ie View.OnTouchListener -> onTouch(View v, MotionEvent event)] antes de que se dé a la vista el evento táctil [ie onTouchEvent(MotionEvent)] .

No estoy seguro si usted ha encontrado su respuesta. Pero encontré preguntas relacionadas similares a las tuyas.

"OnTouch funciona en cualquier lugar que quieras (ya sea en actividad o en la vista), siempre y cuando hayas declarado la interfaz y puesto el Listener a la derecha! Por otro lado, onTouchEvent sólo funciona dentro de una Vista!

Para la funcionalidad de desplazamiento y zoom, supongo que onTouchListener será suficiente para completar ambas funciones (y muchas más como la rotación, etc).

  • EditText en ListView pierde foco cuando se presiona en Android 4.x
  • Android: ¿Cómo determinar el índice de caracteres de la posición de un evento táctil en TextView?
  • OnTouchListener para toda la pantalla
  • Saltar ImageView mientras arrastra. Los valores de getX () y getY () saltan
  • Ver sólo el registro de MotionEvent.ACTION_DOWN
  • ¿Cómo puedo pasar Touch Listeners a la vista personalizada para arrastrar y soltar?
  • Cómo implementar OnTouch Listener en XML
  • Imagen en lienzo con eventos táctiles
  • Pase Android NestedScrollView desplazamientos horizontales a un padre Ver
  • SwipeListView sólo un elemento abierto a la vez
  • Cambiar la altura del diseño relativo con la misma velocidad que el dedo del usuario Se mueve en el diseño
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.