Как определить, когда кнопка нажата и отпущена на Android - программирование

Как определить, когда кнопка нажата и отпущена на Android

Я хотел бы запустить таймер, который начинается, когда кнопка сначала нажата и заканчивается, когда она отпущена (в основном я хочу измерить, как долго удерживается кнопка). В обоих случаях я буду использовать метод System.nanoTime(), а затем вычесть начальное число из последнего, чтобы получить измерение за время, прошедшее при удерживании кнопки.

(Если у вас есть предложения по использованию чего-то другого, кроме nanoTime() или другого способа измерения продолжительности нажатия кнопки, я также открыт для них.)

Спасибо! Andy

4b9b3361

Ответ 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 остановить время.

вычислить разницу.