2012-01-19 14 views
6

Attualmente sto usando onTouchEvent(MotionEvent me) per registrare gli eventi di input, tuttavia, essendo un'app di gioco, quando il frame rate rallenta il programma a volte non riesce a registrare un evento input.UP dopo che un pulsante GUI è stato rilasciato, il che fa sì che il mio personaggio continua a muoverti da solo ...Android: come controllare se lo schermo viene toccato?

C'è un metodo booleano nell'API che controlla se c'è un dito sullo schermo in un dato momento?

Grazie

risposta

5

potrebbe essere la pena di verificare la documentazione per onUserInteraction().

Qualcosa del genere permetterebbe di sapere come di recente l'utente ha interagito con lo schermo:

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

cosa se volete ricevere una notifica su qualsiasi applicazione, non solo la vostra che aveva sul touch? – jonney

0

Garantire che torno sempre true da OnTouchEvent al contrario di super.OnTouchEvent sembra avere risolvere il problema ...

2

È possibile ottenere l'evento in corso e vedere se Azione giù, Sposta o Azione in alto e altre azioni, ma per il momento fermiamoci qui. Ho un semplice esempio che penso che tu o chiunque altro lo troverà 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,

Problemi correlati