在有些按键事件中,需要区分长按,与短按的差别。多久属于长按可以自定义,一般默认在1s。
在这个长短按事件中,用到三个方法:
onKeyDown()-----处理按下去的事件
onKeyUp()-----处理按键弹起的事件
onKeyLongPress()-----处理长按事件
此处定义的一个全局变量 private boolean shortPress = false;
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (keyCode == KeyEvent.KEYCODE_BACK) { return true; } //scanner key if (keyCode == 280) { if(event.getAction() == KeyEvent.ACTION_DOWN) { event.startTracking(); //只有执行了这行代码才会调用onKeyLongPress if (event.getRepeatCount() == 0) { shortPress = true;//短按事件逻辑 } return true; } } return super.onKeyDown(keyCode, event); }
@Override public boolean onKeyLongPress(int keyCode, KeyEvent event) { if (keyCode == 280) { //长按事件的逻辑 return true; } //Just return false because the super call does always the same (returning false) return false; }@Override public boolean onKeyUp(int keyCode, KeyEvent event) { if(keyCode == 280) //此处是按键的对应键值{ //按键弹起事件逻辑if(shortPress){}else{ } } return super.onKeyUp(keyCode, event); }