如何检测何时在Android上按下并释放按钮

2022-09-01 13:56:29

我想启动一个计时器,该计时器从按钮首次按下时开始,到释放按钮时结束(基本上我想测量按钮按住的时间)。我将在这两个时间使用System.nanoTime()方法,然后从最后一个时间减去初始数字,以获得按住按钮时经过的时间的测量值。

(如果你有任何建议使用nanoTime()以外的其他东西来衡量按钮被按住了多长时间,我也对这些建议持开放态度。

谢谢!安 迪


答案 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;
    }
});

推荐