【发布时间】:2021-10-11 09:23:34
【问题描述】:
在下面的代码中,每次按下键码 144 时,我想在按键向下和向上之间的时间差大于 1000 毫秒时执行一些功能。但是我注意到,当 keydown 超过 100 毫秒左右时,它会继续重复调用 keydown,而不是等待 keyup 侦听器并最终计算差异,因为它计算与上次 keydown 时间的差异。如何以这样一种方式进行编程,即监听器应该只调用一次按键,直到触发kep up事件
@覆盖 public boolean dispatchKeyEvent(KeyEvent event) {
long diff=0;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
down = System.currentTimeMillis();
Log.e("current_down",String.valueOf((down)));
break;
case MotionEvent.ACTION_UP:
Log.e("current_down2",String.valueOf((down)));
//this is the time in milliseconds
diff = (System.currentTimeMillis()- down);
break;
}
int keyCode = event.getKeyCode();
Log.e("javan",String.valueOf((keyCode)));
if (event.getAction() == KeyEvent.ACTION_UP && keyCode == 144) {
if(diff >1000){
//do something
}
}
【问题讨论】: