En onTouchEvent, ACTION_UP no funciona
Me gustaría leer cuando un jugador toca la pantalla, y cuando no.
@Override public boolean onTouchEvent(MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_UP){ //ACTION UP actionOnUP = true; Log.v("MC", "Up"); } if(event.getAction() == 0){ //ACTION DOWN actionOnUP = false; Log.v("MC", "Down"); } Log.v("MC", event.getAction() + " "); return super.onTouchEvent(event); }
Este código, sí, funciona, pero sólo cuando el jugador toca la pantalla (ACTION_DOWN), pero cuando no toca la pantalla (ACTION_UP), no pasa nada: /
- OnTouchEvent se ejecuta cuando se pasa la página usando ViewPager y PassByValue
- Algún tipo de JavaScript es preventDefault para Android
- Cómo obtener una vista desde un evento de coordenadas en android cuando la vista establecer la rotación?
- Android: Recyclerview horizontal dentro de una Recyclerview vertical
- Android dibuja una línea para seguir tu dedo
^ Esta es la forma de pantalla LogCat. Puedes ver: esto es solo ACTION_DOWN, pero nada sobre ACTION_UP. La clase se extiende Ver:
public class MainClass extends SurfaceView implements SurfaceHolder.Callback {
¿Me puedes ayudar?
EDIT: Mi juego se basa en este tutorial: http://www.droidnova.com/2d-tutorial-series-part-v848.html
- Disparar Evento táctil desde la vista DialogFragment a la vista de actividad principal
- Cómo detectar un solo toque, así como multi-toque en onTouchEvent ()
- ¿Cómo hacer algo repetidamente mientras se presiona un botón?
- Eliminación del fragmento haciendo clic / tocando fuera:
- Limitación de Drag de ImageView en Android
- MyGestureDetector extiende SimpleOnGestureListener
- En EditText, aparece un diálogo al hacer clic en un subconjunto específico de texto
- Android: usando MotionEvent para arrastrar y soltar el posicionamiento de vistas en un grupo de vistas personalizado
Mi conjetura es que super.onTouchEvent está devolviendo false
, ya que cualquier superclase que está llamando no se preocupa por el evento táctil.
Si devuelves false
a onTouchEvent, el sistema operativo Android ya no te informará de ningún evento posterior en ese gesto. Si desea continuar recibiendo la información del evento táctil ( ACTION_UP
por ejemplo), debe devolver el valor true
al primer evento ACTION_DOWN
.
¡La solución de "petey" funcionó para mí! Excepto algunos errores de sintaxis, corregidos aquí:
int code = event.getAction() & MotionEvent.ACTION_MASK; if ((code == MotionEvent.ACTION_POINTER_UP) || (code == MotionEvent.ACTION_UP) || (code == MotionEvent.ACTION_CANCEL)) {
Muchas gracias.
tratar :
int action = event.getAction(); int code = action & MotionEvent.ACTION_MASK; if (code == MotionEvent.ACTION_POINTER_UP || code == MotionEvent.ACTION_UP || MotionEvent.ACTION_CANCEL) {