在Android中已经有了长按与短按的识别,只是长按识别的时间比较短 ,大概在1s以上就认为是长按了。主要的思路是设置一个标志位,利用事件相应次数函数event.getRepeatCount()来设置标志位。主要用的函数是按键响应的三个函数 onKeyLongPress,onKeyDown和onKeyUp,具体代码如下:
private boolean shortPress = false;
@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
shortPress = false;
//长按要执行的代码
return true;
}
return false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
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 onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
if(shortPress){
//短按要执行的代码
}
shortPress = false;
return true;
}
return super.onKeyUp(keyCode, event);
}