Android: no parece poder usar MotionEvent.ACTION_MOVE correctamente

Soy bastante nuevo en la programación de Android y Java (aunque tengo cierta experiencia con C #, por lo que ayuda).

En este momento estoy goofing alrededor con un par de cosas para llegar a saber cómo funciona todo. He hecho una actividad que implementa onTouchListener. He sobrepasado onTouch y tengo un cambio en event.getAction ():

public boolean onTouch(View v, MotionEvent event) { float x; float y; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // gets called { x = event.getX(); y = event.getY(); circle c = new circle(this, x, y, 10, 0xFFFFFF); _main.addView(c, tapCount++); break; } case MotionEvent.ACTION_MOVE: // doesnt seem to do anything { x = event.getX(); y = event.getY(); circle c = new circle(this, x, y, 10, 0xFFFFFF); _main.addView(c, tapCount++); break; } } return false; } 

Donde "círculo" es una clase que dibuja un círculo.

Lo que esperaba ver era un rastro de círculos mientras arrastraba mi dedo por la pantalla. En su lugar, el círculo sólo se dibuja cuando empiezo a tocar.

He comparado mi código con ejemplos (por ejemplo: este blogpost de Google: http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html ) y no puedo encontrar mi error .

EDIT: Enlace a la clase completa: http://pastebin.com/tVDQjQhu

EDIT: Corregido. Uno tiene que devolver true en la función onTouch (). D'oh

Tenía el mismo problema mientras utilizaba MotionEvent.ACTION_MOVE . Para que MotionEvent.ACTION_MOVE funcione, devuelva true en lugar de false.

Para mí la solución fue

 return true 

En la función onTouch, ya que debería utilizar esta función

 public boolean onTouch(View v, MotionEvent event){ float x; float y; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // gets called { x = event.getX(); y = event.getY(); circle c = new circle(this, x, y, 10, 0xFFFFFF); _main.addView(c, tapCount++); break; } case MotionEvent.ACTION_MOVE: // doesnt seem to do anything { x = event.getX(); y = event.getY(); circle c = new circle(this, x, y, 10, 0xFFFFFF); _main.addView(c, tapCount++); break; } } return true; //the problem was here 

}

Cuando devuelve false de onTouch (Ver v, evento MotionEvent), sólo se llamará a MotionEvent.ACTION_DOWN. Por lo que debe devolver true de esta función

Espero que esto sea de ayuda

Tenía los mismos problemas también, no sé si es un error o no, pero me las arreglé para hacerlo funcionar agregando OnClickListener a la implementación, e implementando public void onClick(View v) y añadiendo también setOnClickListener(this) on the constructor.

  • Eliminación del fragmento haciendo clic / tocando fuera:
  • Algún tipo de JavaScript es preventDefault para Android
  • ¿Cómo puedo mantener los eventos de ontouch manejados por un widget incluso si las coordenadas de tacto ya no están dentro del widget, en android
  • Pase Android NestedScrollView desplazamientos horizontales a un padre Ver
  • VelocityTracker dando resultados aparentemente aleatorios
  • ¿Cómo puedo arrastrar y soltar varias vistas de imagen sobre otras vistas de imagen de Android
  • En onTouchEvent, ACTION_UP no funciona
  • Cómo reconocer el carácter dibujado sobre lienzo
  • Averiguar cuándo ha finalizado un MotionEvent
  • ¿Cómo puedo obtener las coordenadas de un mapa al toque con MapFragment (no MapView)?
  • Evento de toque de la manija para los artículos dentro de Recyclerview - android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.