一起Talk Android吧(第一百零八回:Android中View之按键事件)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/talk_8/article/details/85489902

各位看官们,大家好,上一回中咱们说的是Android中View之长按事件的例子,这一回咱们说的例子是View之按键事件。闲话休提,言归正转。让我们一起Talk Android吧!

看官们,在上一回中View中的长按事件粉墨登场了,这一回中登场的是按键事件,这家伙看着单击和长按事件都有英文名了,自己也不想落后,于是给自己起了一个英文名:key

看官们,按键事件是指用户通过软键盘或者手机上的实体按键触发的事件,比如位于手机最下面的返回键,手机侧边的音量上下键,以及软键盘上的各种按键。只要按下这些键都会触发按键事件,我们在程序中可以捕获到这些按键,然后对不同的按键做出不同响应。那么我们如何捕获按键事件呢?其实只需要注册事件监听器就可以,接下来我们以EditText控件为例子,通过文字结合代码的方式来给大家做演示。

下面是按键事件的使用方法和步骤:

  • 1.在Activity中创建EditTex控件并且给它注册按键事件监听器;
  • 2.重写监听器中的onKey()方法,内容依据程序需要而定;

下面是具体的代码和实现:

        mEditText= (EditText) findViewById(R.id.id_edit_text); //创建EditText控件
        mEditText.setOnKeyListener(new View.OnKeyListener() { //给EditText控件注册按键事件监听器
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) { //重写监听器中的onKey方法
                switch (event.getAction()){ //用来判断哪个按键被按下,或者按键的行为是什么,这里只判断了按键行为
                    case KeyEvent.ACTION_UP: //按键行为:被弹起状态
                        //do some thing break;
                    case KeyEvent.ACTION_DOWN:  //按键行为:被按下状态
                        //do some thing break;
                    default:
                        break;
                }
                return false;
            }
        });

看官们,关于onKey()方法中的两个参数需要专门介绍一下,先说一下int类型的keyCode参数,它可以用来判断是哪个按键触发了按键事件,因为不同的键有不同的keyCode,比如常用的Home键,它的keycode数值为3。大家可以到源代码中看到所有按键的keyCode数值。限于篇幅,我只列出其中一部分:

public class KeyEvent extends InputEvent implements Parcelable {
    /** Key code constant: Unknown key code. */
    public static final int KEYCODE_UNKNOWN         = 0;
    /** Key code constant: Soft Left key.
     * Usually situated below the display on phones and used as a multi-function
     * feature key for selecting a software defined function shown on the bottom left
     * of the display. */
    public static final int KEYCODE_SOFT_LEFT       = 1;
    /** Key code constant: Soft Right key.
     * Usually situated below the display on phones and used as a multi-function
     * feature key for selecting a software defined function shown on the bottom right
     * of the display. */
    public static final int KEYCODE_SOFT_RIGHT      = 2;
    /** Key code constant: Home key.
     * This key is handled by the framework and is never delivered to applications. */
    public static final int KEYCODE_HOME            = 3;
    /** Key code constant: Back key. */
    public static final int KEYCODE_BACK            = 4;
...
}

以上代码位于文件\sdk\sources\android-28\android\view\KeyEvent.java中,这里的sdk是自己安装AndroidSDK的路径,28是sdk的版本,这是我的文件路径,与大家的可能不同。

接着说一下KeyEvent类型的event参数,它用来判断按键的具体行为,常用的按键行为就是按键被按下和被弹起,这个在上面的示例代码中也有体现。大家可以参考代码中的注释。
各位看官,关于Androd中View之按键事件的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

猜你喜欢

转载自blog.csdn.net/talk_8/article/details/85489902