Java 如何在android上检测按钮按下和释放的时间
我想启动一个计时器,它从第一次按下按钮开始,到松开按钮结束(基本上我想测量按下按钮的时间)。我将在这两个时间使用System.nanoTime()方法,然后从最后一个数字中减去初始数字,以获得按下按钮所经过时间的测量值 (如果您对使用nanoTime()或其他测量按钮按下时间的方法有任何建议,我也愿意接受。) 谢谢! Andy使用而不是OnClick Listener:Java 如何在android上检测按钮按下和释放的时间,java,android,button,timer,pressed,Java,Android,Button,Timer,Pressed,我想启动一个计时器,它从第一次按下按钮开始,到松开按钮结束(基本上我想测量按下按钮的时间)。我将在这两个时间使用System.nanoTime()方法,然后从最后一个数字中减去初始数字,以获得按下按钮所经过时间的测量值 (如果您对使用nanoTime()或其他测量按钮按下时间的方法有任何建议,我也愿意接受。) 谢谢! Andy使用而不是OnClick Listener: // this goes somewhere in your class: long lastDown; long l
// 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;
}
});
不幸的是,当用键盘按下按钮时,这不起作用。它只在被触摸时才起作用。所以你想看看键盘按钮被按下的时间有多长?这个按钮需要修改。如果按下按钮,则在按下状态下滑动手指握住按钮,然后松开手指,按钮保持按下状态。您还需要添加
MotionEvent.ACTION\u CANCEL
来处理这种行为。在onTouch
方法的末尾还缺少return true
,类似于本文: