监听键盘的事件有两种
Table of Contents
1.通过onKeyDown方法来监听,
代码如下
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
//按下键盘上返回按钮
if (keyCode == KeyEvent.KEYCODE_BACK)
{
new AlertDialog.Builder(LoginActivity.this).setTitle("提示")
.setMessage("确认退出吗?")
.setIcon(R.drawable.icon)
.setPositiveButton("确定",
new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog,
int which)
{
android.os.Process.killProcess(android.os.Process.myPid()); // 结束进程
}
})
.setNegativeButton("取消",
new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog,
int which)
{
}
})
.show();
return true;
}
else
{
return super.onKeyDown(keyCode, event);
}
}
2.通过dispatchKeyEvent方法来监听,
代码如下
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
Log.e("jjy: ",event + "");
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
function();//处理事件,这里只用返回按键来做例子,重点看总结!!
return false;
}
return super.dispatchKeyEvent(event);
}
总结
方法一:
优点:使用方便
缺点:容易出现多种场景同时监听,无法获取到当前焦点,导致调用无反应
方法二:
优点:无论什么情况下都能使用
缺点:会监听按钮按下和回弹的两次事件,需要分别做监听
补充:方法二中的方法,获取参数event时得到的是一个对象,需要运用相关方法来做逻辑处理
如下:
event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN
event.getKeyCode()//用来监听用户操作按钮
event.getAction()//用来判断键盘的动作 ACTION_DOWN按下 ACTION_UP回弹
https://blog.csdn.net/loveryunz/article/details/134398910