28

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

(如果您对使用 nanoTime() 以外的其他方法或其他测量按钮按住时间的方法有任何建议,我也愿意接受。)

谢谢!安迪

4

3 回答 3

50

使用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;
     }
  });
于 2012-08-15T04:23:11.383 回答
7

这肯定会奏效:

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;
    }
});
于 2012-08-15T05:41:18.047 回答
5
  1. 在 onTouchListener 中启动计时器。
  2. 在 onClickListener 中停止时间。

计算差异。

于 2012-08-15T05:38:14.763 回答