我想启动一个计时器,该计时器从第一次按下按钮开始,在释放按钮时结束(基本上我想测量按住按钮的时间)。我将在这两个时间使用 System.nanoTime() 方法,然后从最后一个数字中减去初始数字,以获得按住按钮时经过的时间的测量值。
(如果您对使用nanoTime()以外的其他方法或其他方法来测量按钮按住多长时间有任何建议,我也对这些建议持开放态度。
谢谢!安 迪
使用 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;
}
});
这肯定会起作用:
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;
}
});
- 在 onTouchListener 中,启动计时器。
- 在 onClickListener 中停止时间。
计算差异。