各位看官们,大家好,上一回中咱们说的是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之按键事件的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!