Итак, я пытаюсь отобразить на кнопке время с тех пор, как пользователь начал ее нажимать, вот мой код:
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));
}
Но не сработало, цикл while не останавливается, и isDown сохранил свое последнее значение true
. Может ли кто-нибудь сказать мне, как я могу заставить его работать? СПАСИБО!