回退监听android,Android 回退键监听

回退键(back)监听:

方法1:回调方法onBackPressed

String LOG_TAG="TAG";

@Override

public void onBackPressed() {

// super.onBackPressed();//注释掉这行,back键不退出activity

Log.i(LOG_TAG, "onBackPressed");

}

这个方法可以阻止用户点击后退键来退出程序。

一般的像升级程序或者重要数据传输页面都是要阻止用户轻易退出的。

这个方法也是我们最简单、常用的一个方法。

方法2:回调方法onKeyDown

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

Log.i(LOG_TAG, "onKeyDown: keyCode -- " + keyCode);

switch (keyCode) {

case KeyEvent.KEYCODE_BACK:

Log.i(LOG_TAG, "KeyEvent.KEYCODE_BACK");

//                break;

return false;//拦截事件

case KeyEvent.KEYCODE_MENU:

Log.i(LOG_TAG, "KeyEvent.KEYCODE_MENU");

break;

case KeyEvent.KEYCODE_HOME:

Log.i(LOG_TAG, "KeyEvent.KEYCODE_HOME");

// 收不到

break;

case KeyEvent.KEYCODE_APP_SWITCH:

Log.i(LOG_TAG, "KeyEvent.KEYCODE_APP_SWITCH");

// 收不到

break;

default:

break;

}

return super.onKeyDown(keyCode, event);

}

这个方法是监听按键事件,但是阻止用户的行为,并且这种方法监听不到Home键的事件。

方法3:回调方法dispatchKeyEvent

这是个事件分发的方法,无论手指按下屏幕或滑动屏幕、离开屏幕都是会触发这个方法

@Override

public boolean dispatchKeyEvent(KeyEvent event) {

Log.i(LOG_TAG, "dispatchKeyEvent: keyCode -- " + event.getKeyCode());

if (event.getKeyCode()==4){//回退键的KeyCode是4.

return false;//表示不分发

}else{

return super.dispatchKeyEvent(event);

}

}

如果事件没有分发(返回false),onBackPressed方法和onKeyDown方法都是没有得到回调的

总结

正常情况肯定是用第一种方法咯。

后面两种方法涉及到事件的分发。

事件分发要彻底理解是一个相当麻烦的过程:包括事件分发、事件拦截、事件处理,并且手指按下、移动、松开都要分析三个事件情况。

上面三个方法中,如果dispatchKeyEvent返回false,后面两个方法是无法得到回调的。

如果onKeyDown返回false,onBackPressed方法是没有得到回调的。

共勉:生活可能迫使你做很多事情,但是自己想做的事情还是要坚持去做。

### 如何在Android应用中监听返回键 在Android应用程序开发过程中,对于用户按下不同按键作出相应处理是一项常见需求。针对返回键事件的监听,主要通过重写`Activity`中的`onKeyDown(int keyCode, KeyEvent event)`方法来完成[^3]。 当检测到特定按键被按下时,此函数会被调用;因此,在这里可以加入逻辑判断是否为返回键以及想要执行的动作。如果希望阻止默认行为,则需在此处返回`true`; 否则应返回`false`, 让系统自行处理该按键事件。 下面是一段用于监听并响应返回键按下的Java代码实例: ```java @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { // 当按下BACK键时触发的操作 Toast.makeText(this, "Back key pressed", Toast.LENGTH_SHORT).show(); // 返回 true 表示已消费此次按键事件 return true; } // 对于其他类型的按键,让父类去处理它们 return super.onKeyDown(keyCode, event); } ``` 此外,也可以利用`onBackPressed()`来进行更简洁的方式实现相同的功能。这种方式不需要显式地检查按键码,而是专门用来捕捉返回操作: ```java @Override public void onBackPressed(){ // 自定义返回键的行为 Toast.makeText(this,"Custom back action executed.",Toast.LENGTH_LONG).show(); // 如果不希望执行默认动作(关闭当前activity),可取消掉下行代码 //super.onBackPressed(); } ``` 这两种方式都可以有效地捕获用户的返回请求,并允许开发者自定义其后的流程控制或界面变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值