2012-01-19 33 views
6

Actualmente estoy usando onTouchEvent(MotionEvent me) para registrar eventos de entrada, sin embargo, al ser una aplicación de juegos, cuando la velocidad de fotogramas se ralentiza, el programa a veces falla al registrar un evento input.UP después de que se haya liberado un botón GUI, lo que causa que mi personaje sigue moviéndose por su cuenta ...Android: ¿cómo comprobar si se está tocando la pantalla?

¿Hay un método booleano en la API que comprueba si hay un dedo en la pantalla en un momento dado?

Gracias

Respuesta

5

podría ser vale la pena mirar la documentación de onUserInteraction().

Algo como esto permitirá saber cuánto tiempo hace que el usuario ha interactuado con la pantalla:

@Override 
public void onUserInteraction(){ 
    MyTimerClass.getInstance().resetTimer(); 
} 
+0

lo que si quieres ser notificado de cualquier aplicación no sólo la suya que tenía el tacto? – jonney

0

Asegurar que siempre vuelvo true de OnTouchEvent en contraposición a super.OnTouchEvent parece tener resolver el problema ...

2

Puede obtener el evento táctil y ver si Acción hacia abajo, Mover o Acción hacia arriba y otras acciones, pero por el momento, detengámonos aquí. Tengo un ejemplo simple que creo que usted o cualquier otra persona lo encontrará útil.

import android.app.Activity; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

    private boolean isTouch = false; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     int X = (int) event.getX(); 
     int Y = (int) event.getY(); 

     int eventaction = event.getAction(); 
     switch (eventaction) { 

     case MotionEvent.ACTION_DOWN: 
      Toast.makeText(this, "ACTION_DOWN AT COORDS "+"X: "+X+" Y: "+Y, Toast.LENGTH_SHORT).show();   
      isTouch = true; 
      break; 

     case MotionEvent.ACTION_MOVE: 
      Toast.makeText(this, "MOVE "+"X: "+X+" Y: "+Y, Toast.LENGTH_SHORT).show(); 
      break; 

     case MotionEvent.ACTION_UP: 
      Toast.makeText(this, "ACTION_UP "+"X: "+X+" Y: "+Y, Toast.LENGTH_SHORT).show(); 
      break; 
     } 
     return true; 
    } 
} 

Cheers,

Cuestiones relacionadas