Dans mon application, lorsqu'un bouton image particulier est cliqué et maintenu enfoncé, je dois pouvoir calculer le temps pendant lequel le bouton image a été maintenu enfoncé. Quelqu'un peut-il m'aider en me donnant des conseils simples ou un exemple de code ? Je suis vraiment bloqué ici. Existe-t-il un écouteur d'événements spécifique pour cette exigence particulière ? J'écris cette application spécifiquement pour les téléphones à écran tactile uniquement.
Réponses
Trop de publicités?Ce que vous voulez utiliser est ceci :
OnTouchListener touchListener = new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
Log.d(LOG_TAG, "Action is: " + action);
switch (action){
case MotionEvent.ACTION_DOWN:
timeAtDown = SystemClock.elapsedRealtime();
break;
case MotionEvent.ACTION_UP:
long durationOfTouch = SystemClock.elapsedRealtime() - timeAtDown;
Log.d(LOG_TAG, "Touch event lasted " + durationOfTouch + " milliseconds.");
break;
}
return false;
}
};
button.setOnTouchListener(touchListener);
timeAtDown est un long
défini comme un champ de classe, car il doit persister entre les appels au touchListener. En utilisant cette méthode, vous n'interférez pas non plus avec le fonctionnement normal du bouton ; vous pouvez définir un écouteur de clic qui fonctionnera correctement. Remarque : l'opération de "clic" ne se produit pas tant que l'action de l'événement tactile ne passe pas de DOWN (ou MOVE) à UP.
Expérimentez avec les callbacks on*** de http://developer.Android.com/reference/Android/view/KeyEvent.Callback.html .
Par exemple Button.onKeyDown, enregistre l'heure actuelle dans une variable et Button.onKeyDown calcule la différence avec la dernière heure enregistrée.