按键响应onKeyDown,onKeyLongPress,onK

作者: YoungTa0 | 来源:发表于2018-05-29 20:28 被阅读13次

前言

有时候我们需要为按键区分长按,短按功能(虽然现在手机很少用按键,但是智能终端还是经常用到)。这时候就要对onKeyDown,onKeyLongPress,onKeyUp有深入的了解。

按键响应流程

当按下按键时,按键响应流程:
onKeyDown→onKeyLongPress→onKeyUp
如果只是短按功能实现,只需要在onKeyDown或者onKeyUp里实现就好了。
如果是要具备长按和短按功能,就需要重写onKeyDown,onKeyLongPress,onKeyUp。

长按功能实现

1.重写onKeyDown

添加一个Boolean值,用来在onKeyUp里响应长按还是短按事件
必须返回true事件才能到onKeyLongPress

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        LoggerUtil.d("keyCode down:" + keyCode);
        switch (keyCode) {
            case KeyEvent.KEYCODE_MEDIA_NEXT:
                if (event.getRepeatCount() == 0) {
                    longPressNext = false;
                    event.startTracking();
                    //返回true才能到onKeyLongPress
                    return true;
                }
                break;           
             default:
                break;
        }
      return false;
    }
2.重写onKeyLongPress

必须返回true,事件才能到onKeyUp

   public boolean onKeyLongPress(int keyCode, KeyEvent event) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_MEDIA_NEXT:
                longPressNext = true;
                return true;
            default:
                break;
        }
        return super.onKeyLongPress(keyCode, event);
    }

3.重写onKeyUp

    public boolean onKeyUp(int keyCode, KeyEvent event) {
        LoggerUtil.d("keyCode up:" + keyCode);
        switch (keyCode) {
            case KeyEvent.KEYCODE_MEDIA_NEXT:
                if(!longPressNext){
                    LoggerUtil.d("onKeyDown KEYCODE_MEDIA_NEXT pressed--" + event.getRepeatCount());
                    bt_next.setBackgroundColor(Color.parseColor("#00FF00"));
                    if (isRecording || !isCanTouchOrPlay) {
                        return false;
                    }
                    Log.e("playList", "onKeyUp: " );
                    stopAsr(false);
                    if (isSleep) {
                        wakeUp();
                        initPlay();
                    }
                    next();
                }else {
                    Log.e("playList", "onKeyUp: "+"longPressNext"+playTypeIndex );
                    stopAsr(false);
                    AppApplication.mediaPlayer.pausePlay();
                    nextPlayList();
                    longPressNext = false;
                }
                break;
            default:
                break;
        }

        return super.onKeyUp(keyCode, event);
    }

相关文章

  • 按键响应onKeyDown,onKeyLongPress,onK

    前言 有时候我们需要为按键区分长按,短按功能(虽然现在手机很少用按键,但是智能终端还是经常用到)。这时候就要对on...

  • 键盘事件

    键盘事件 onkeydown 按键按下事件 onkeypress 按键产生字符事件 onkeyup 按键弹起事件 ...

  • JavaScript onkeydown事件入门实例(键盘某个按

    这篇文章主要介绍了JavaScript onkeydown事件入门实例,onkeydown事件捕捉键盘上某个按键被...

  • 一点笔记[JavaScript]

    按键反馈 document.onkeydown = function(X) { }document:整个页面,...

  • 键盘事件

    onkeydown:当键盘按键按下的时候触发 onkeyup:当键盘按键抬起的时候触发 event.keyCode...

  • 【Android 进阶】Android 按键事件简单理解

    项目开发中涉及到按键事件处理:“dispatchKeyEvent” “onKeyDown ”“onKeyLise...

  • 6.5键盘事件

    onkeydown : 当按下键盘按键时触发的事件。 onkeyup : 当键盘按键抬起时触发的事件。 onkey...

  • js 键盘事件

    1.键盘事件 onkeyup 某个键盘按键被松开时触发 onkeydown 某个键盘按键被按下时触发 onkeyp...

  • JS事件处理

    鼠标事件 事件冒泡 控件随着鼠标移动 按键事件 基础 onkeydown、onkeyup、onkeypress 小...

  • JavaScript键盘事件

    键盘事件与keyCode属性onkeydown:在用户按下一个键盘按键时发生onkeypress:在按下键盘按键时...

网友评论

    本文标题:按键响应onKeyDown,onKeyLongPress,onK

    本文链接:https://www.haomeiwen.com/subject/qbaajftx.html