2012-06-29 16 views
7

Necesito detectar en mi aplicación cuando el usuario deja de moverse a través de una vista específica. Estoy creando algo similar al texto de marca en mi aplicación que puede interactuar mientras el usuario toca la vista y se mueve a través de ella. Y necesito comenzar a desplazar la vista después de que el usuario levanta su dedo. Como noto si muevo mi dedo por la vista unos segundos y cuando levanto mi dedo, no se llama al MotionEvent.ACTION_UP. El último evento que capturo es ACTION_MOVE. Entonces, ¿cómo puedo detectar cuándo el usuario levanta su dedo después de moverse por la vista unos segundos? ¿Hay algún tipo de función que pueda detectar eso?cómo detectar cuándo ha finalizado MotionEvent.ACTION_MOVE

Aquí está el código que estoy usando:

txt.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, final MotionEvent event) { 
     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       Log.e("","event down : "+event.getAction()); 
       handler.removeCallbacks(runnable); 
       break; 
      case MotionEvent.ACTION_UP: 
       Log.e("","event up : "+event.getAction()); 
       if(myTimer!=null){ 
        myTimer.cancel(); 
       } 
       break; 
      case MotionEvent.ACTION_MOVE: 
       Log.d("","move"); 
       // handler.removeCallbacks(runnable); 
       checkX(); 
       break; 
     } 
     return true; 
    } 
}); 

Gracias de antemano!

+0

muestra tu código. entonces podemos ayudar – rajpara

+0

ejemplo de código agregado. –

+0

Tengo el mismo problema con multitouch, después de que se envíe FIRST MotionEvent.ACTION_MOVE y luego MotionEvent.ACTION_POINTER_UP. Es algo estúpido ... –

Respuesta

2

Creo que el evento puede enviar una acción ACTION_CANCEL antes de que finalice el gesto. O bien, si se arrastra fuera de la vista que está revisando, podría ser ACTION_OUTSIDE.

La mejor manera de confirmar/depuración esto sería poner una declaración en Log.d(), imprimir el valor MotionEvent.getActionMasked(), y comprobar para ver qué acciones se llaman después de que termine su evento ACTION_MOVE.

Cuestiones relacionadas