2011-03-11 4 views

Répondre

12

Vous pouvez essayer de mélanger MotionEvent et Runnable/Handler pour y parvenir.

Exemple de code:

private final Handler handler = new Handler(); 
private final Runnable runnable = new Runnable() { 
    public void run() { 
     checkGlobalVariable(); 
    } 
}; 

// Other init stuff etc... 

@Override 
public void onTouchEvent(MotionEvent event) { 
    if(event.getAction() == MotionEvent.ACTION_DOWN) { 
     // Execute your Runnable after 5000 milliseconds = 5 seconds. 
     handler.postDelayed(runnable, 5000); 
     mBooleanIsPressed = true; 
    } 

    if(event.getAction() == MotionEvent.ACTION_UP) { 
     if(mBooleanIsPressed) { 
      mBooleanIsPressed = false; 
      handler.removeCallbacks(runnable); 
     } 
    } 
} 

Maintenant, il vous suffit de vérifier si mBooleanIsPressed est true dans la fonction checkGlobalVariable().

Une idée je suis venu avec quand j'écrivais cela était d'utiliser horodatages simples (par exemple System.currentTimeMillis()) pour déterminer la durée entre MotionEvent.ACTION_DOWN et MotionEvent.ACTION_UP.

+0

Ok. C'est quelque chose dont j'ai besoin sur la plupart de mes écrans d'activité. Comment activer l'écoute sur l'écran d'activité. J'ai implémenté le programme d'écoute onTouchEvent dans l'activité, mais comment l'activer pour l'activité, de sorte que l'onTouchEvent soit appelé lorsque l'utilisateur touche l'écran d'activité. Merci – Androider

+0

La plupart des exemples sont en termes de toile, etc. Mon onTouchEvent ne reçoit pas d'appel quand l'utilisateur touche l'écran d'activité – Androider

+0

@Androider: Peut-être que vous cherchez http://developer.android.com/reference/android/app/Activity .html # dispatchTouchEvent (android.view.MotionEvent)? – Wroclai

8

Vous ne pouvez pas utiliser les horodatages unix dans ce cas. Android propose sa propre mesure de temps.

long eventDuration = 
      android.os.SystemClock.elapsedRealtime() 
      - event.getDownTime(); 
21
long eventDuration = event.getEventTime() - event.getDownTime(); 
Questions connexes