Так что я пытаюсь отобразить на кнопку время, так как пользователь начал нажимать его, вот мой код:Как получить время кнопка нажата в то время как пользователь все еще удерживая в Android
btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
long eventDuration;
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
isDown = true;
break;
case MotionEvent.ACTION_UP:
isDown = false;
break;
default:
break;
}
eventDuration = motionEvent.getEventTime() - motionEvent.getDownTime();
btn.setText(String.valueOf(eventDuration));
return true;
}
});
Код работает, за исключением того, что значение нажатого времени не обновляется, если пользователь удерживает кнопку и не двигает пальцем, потому что нет действия, такого как «MotionEvent.ACTION_HOLD». Я хочу, чтобы это значение продолжало обновляться, даже если пользователь не двигает пальцем.
Я попытался запустить это метод каждый раз, когда действие является «MotionEvent.ACTION_DOWN»
while(isDown){
eventDuration = motionEvent.getEventTime() - motionEvent.getDownTime();
btn.setText(String.valueOf(eventDuration));
}
Но не работает цикл, пока не остановится и isDown сохранил свое последнее значение true
. Может ли кто-нибудь сказать мне, как я могу заставить его работать? БЛАГОДАРЯ!
Отличная идея использования countDownTimer. Я попробую поблагодарить вас! –
Это работало PERFRCT! БОЛЬШОЕ СПАСИБО ! –
Рад, что это сработало. :) –