Android 按键长按与短按识别

来源:互联网 发布:校园网络系统集成方案 编辑:程序博客网 时间:2024/05/20 03:48

在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);
}


0 0
原创粉丝点击