2010-12-10 5 views
1

Gibt es eine Möglichkeit, wie ich für wie lange eine Taste drücken kann? Ich möchte die Zeit erfassen, für die eine Taste gedrückt wird, und entsprechend handeln. Also, wenn ein Benutzer die Taste für 5 Sekunden gedrückt hielt, möchte ich diese 5 Sekunden auf Android erkennen.wie man den Zeitraum erkennt, für den eine Taste gedrückt wird android

Bitte lassen Sie mich wissen

Dank Pranay

+0

wie die Antworten zu akzeptieren, die ich nicht kenne, können Sie mir sagen –

Antwort

2

Geben Sie den Button ein View.OnTouchListener. Mit der von Ihnen implementierten onTouch-Methode erhalten Sie Zugriff auf eine MotionEvent. Mit getFlags() wissen Sie dann, wann der Benutzer den Button (ACTION_DOWN) drückt und wann er stoppt (ACTION_UP). Zeichnen Sie einfach die Systemzeit auf, wenn diese auftritt (oder wie in einer anderen Antwort vorgeschlagen, gibt getDownTime() die Zeit an, die Sie benötigen, aber nur, wenn Sie das Flag ACTION_UP haben).

Erwägen Sie, Antworten zu akzeptieren, wenn Sie mehr von ihnen wollen. Ihr Profil zeigt 0% Annahmequote an.

3

Verwendung nach der Berührung bestimmen duration.You, dass in einem verwenden kann, wenn Aussage: event.getEventTime() - event.getDownTime()> 5000 Er berechnet in ms, was bedeutet, dass Sie für Ihre 5 Sekunden benötigen - event.getDownTime() es könnte auf dem Simulator arbeiten, aber es wird nicht auf dem Gerät arbeitet android.os.SystemClock.elapsedRealtime(): diese Zahl 5000

DO NOT USE sein! Fragen Sie mich nicht, wie ich es weiß;)

0
private long timeElapsed = 0L; //make this a global variable 

    //tvTouches could be a TextView or Button or other views 
    tvTouches.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch (event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        timeElapsed = event.getDownTime(); 
        Log.d("setOnTouchListener", "ACTION_DOWN at>>>" + event.getDownTime()); 
        break; 
       case MotionEvent.ACTION_UP: 
        timeElapsed = event.getEventTime() - timeElapsed; 
        Log.d("setOnTouchListener", "ACTION_UP at>>>" + event.getEventTime()); 
        Log.d("setOnTouchListener", "Period of time the view is pressed>>>" + timeElapsed); 
        Toast.makeText(getApplicationContext(), "Period of time the view is pressed in milliseconds>>>" + timeElapsed, Toast.LENGTH_SHORT).show(); 
        timeElapsed = 0L; 
        //TODO do something when a certain period of time has passed 
        break; 
       default: 
        break; 
      } 
      return true; 
     } 
    }); 
Verwandte Themen