Je voudrais démarrer une minuterie qui commence quand un bouton est enfoncé pour la première fois et se termine quand il est relâché (fondamentalement, je veux mesurer la durée pendant laquelle un bouton est maintenu enfoncé). Je vais utiliser la méthode System.nanoTime () à ces deux moments, puis soustraire le nombre initial du nombre final pour obtenir une mesure du temps écoulé pendant que le bouton était maintenu enfoncé.
(Si vous avez des suggestions pour utiliser autre chose que nanoTime () ou une autre façon de mesurer la durée pendant laquelle un bouton est maintenu enfoncé, je suis également ouvert à celles-ci.)
Merci! Andy
Utilisez OnTouchListener au lieu de OnClickListener:
// this goes somewhere in your class:
long lastDown;
long lastDuration;
...
// this goes wherever you setup your button listener:
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
lastDown = System.currentTimeMillis();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
lastDuration = System.currentTimeMillis() - lastDown;
}
return true;
}
});
Cela fonctionnera certainement:
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
increaseSize();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
resetSize();
}
return true;
}
});
.