2012-01-19 6 views
6

Obecnie używam onTouchEvent(MotionEvent me) do rejestrowania zdarzeń wejściowych, jednak jest to aplikacja do gier, gdy szybkość odtwarzania spada, program czasami nie rejestruje zdarzenia input.UP po zwolnieniu przycisku GUI, co powoduje, że mój znak poruszać się samodzielnie ...Android - jak sprawdzić, czy ekran jest dotykany?

Czy w API jest jak metoda boolowska, która sprawdza, czy w danym momencie jest palec na ekranie?

Dziękuję

Odpowiedz

5

Może być warto sprawdzić w dokumentacji onUserInteraction().

Coś takiego pozwoli Ci wiedzieć, jak niedawno użytkownik interakcje z ekranu:

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

co jeśli u chcą być powiadomiony o każdej aplikacji nie tylko ciebie, który miał na dotyk? – jonney

0

Zapewnienie, że zawsze powrócić true z OnTouchEvent w przeciwieństwie do super.OnTouchEvent wydaje się rozwiązać problem ...

2

Możesz uzyskać zdarzenie dotyku i sprawdzić, czy Akcja w dół, Przenieś, Akcja w górę i inne akcje, ale na razie zatrzymajmy się tutaj. Mam prosty przykład, który myślę, że ty lub ktokolwiek inny uzna to za przydatne.

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,