2012-01-19 4 views
6

Je suis actuellement en train d'utiliser onTouchEvent(MotionEvent me) pour enregistrer des événements d'entrée. Toutefois, étant une application de jeu, lorsque la fréquence d'images ralentit, le programme ne parvient pas à enregistrer un événement input.UP après la libération d'un bouton GUI. continuer à se déplacer tout seul ...Android - comment vérifier si l'écran est touché?

Y at-il une méthode booléenne dans l'API qui vérifie s'il y a un doigt sur l'écran à un moment donné?

Merci

Répondre

5

est peut-être la peine de vérifier la documentation onUserInteraction().

Quelque chose comme cela vous permettra de savoir comment récemment l'utilisateur a interagi avec l'écran:

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

si tu veux être informé sur toute application non seulement la vôtre, qui avait le contact? – jonney

0

Veiller à ce que je reviens toujours true de OnTouchEvent par opposition à super.OnTouchEvent semble avoir résoudre le problème ...

2

Vous pouvez obtenir l'événement tactile et voir si Action vers le bas, Déplacer ou Action vers le haut et d'autres actions, mais pour le moment arrêtons-nous ici. J'ai un exemple simple que je pense que vous ou quelqu'un d'autre le trouvera utile.

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,

Questions connexes