Как определить, когда кнопка нажата и отпущена на Android
Я хотел бы запустить таймер, который начинается, когда кнопка сначала нажата и заканчивается, когда она отпущена (в основном я хочу измерить, как долго удерживается кнопка). В обоих случаях я буду использовать метод System.nanoTime(), а затем вычесть начальное число из последнего, чтобы получить измерение за время, прошедшее при удерживании кнопки.
(Если у вас есть предложения по использованию чего-то другого, кроме nanoTime() или другого способа измерения продолжительности нажатия кнопки, я также открыт для них.)
Спасибо!
Andy
Ответы
Ответ 1
Используйте OnTouchListener вместо 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;
}
});
Ответ 2
Это определенно будет работать:
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;
}
});
Ответ 3
- В onTouchListener запустите таймер.
- В onClickListener остановить время.
вычислить разницу.