如何检测Android上按下和释放按钮的时间

时间:2012-08-15 03:29:53

标签: java android button timer pressed

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

(如果您对使用nanoTime()以外的其他方法有任何建议,或者其他一些方法来衡量按钮的按住时间,我也会对这些人开放。)

谢谢! 安迪

3 个答案:

答案 0 :(得分:37)

使用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;
     }
  });

答案 1 :(得分:6)

这肯定有用:

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

答案 2 :(得分:5)

  1. 在onTouchListener中启动计时器。
  2. 在onClickListener中停止时间。
  3. 计算差异。