很多网友不明白如何在Android平台上捕获Back键的事件,Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台,而回到桌面的尴尬情况,在Android上有两种方法来获取该按钮的事件。
1.直接获取按钮按下事件,此方法兼容Android 1.0到Android 2.1 也是常规方法,直接重写Activity的onKeyDown方法即可,代码如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复
Toast.makeText(android123.this,"Android开发网Back键测试",1).show();
return true;
}
return super.onKeyDown(keyCode, event);
}
而对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写onBackPressed方法即可,代码如下
@Override
public void onBackPressed() {
// 这里处理逻辑代码,cwj提示大家注意该方法仅适用于2.0或更新版的sdk
return;
}
=======================
back键在程序的生命周期有很大作用,譬如某个activity你只想让他出现一次,在周期中点击了back,就让他被销毁掉··
android 的 back键 返回上一级Activity,当然最终会返回到我们的程序的上一级=>主界面,对于很多程序来说不太友好,那么就让我们的程序友好一下吧!
在我们程序的主Activity中 重写一下 onKeyDown事件:
@Override
public boolean onKeyDown(int keyCode,KeyEvent event) {
// 是否触发按键为back键
if (keyCode == KeyEvent.KEYCODE_BACK) {
// 弹出 退出确认框
this.setConfrimDialogListener(new DialogInterface.OnClickListener() {
// 确定 按钮单击事件
@Override
public void onClick(DialogInterface dialog, int which) {
removeDialog(BaseView.DIALOG_YES_NO_MESSAGE);
// back键默认执行方法
// BaseView.this.finish();
// 结束当前的进程(我们的程序)===>真正意义上的退出
android.os.Process.killProcess(android.os.Process.myPid());
}
});
this.setConfrimDialogText(R.string.alert_dialog_exit_confirm);
this.showDialog(BaseView.DIALOG_YES_NO_MESSAGE);
/*
* 下面这句话很重要,return true
* 相当于j2se里事件对象的consume()方法,意思是系统不会继续执行该事件,因为已经被消费掉了,O(∩_∩)O~
* 可以看该事件的源码说明:* @return boolean Return true if this event was consumed.
*/
return true;
} else// 如果不是back键正常响应
return super.onKeyDown(int keyCode,event);
}
分享到:
相关推荐
### Android 4.0 (ICS)上的Home键捕获实现详解 #### 背景介绍 在Android开发中,为了提升用户体验或者实现某些特定的功能需求,开发者有时会希望能够捕获到用户按下Home键的行为。例如,在一个应用内,开发者可能...
总结来说,Android开发者可以通过重写`onKeyDown`、`onKeyUp`和`onBackPressed`方法来处理物理按键事件,特别是屏蔽后退键。不过在屏蔽系统功能前,务必考虑用户体验,确保你的应用仍然保持易用性。同时,提供的文档...
这个"Android高级应用源码-捕获Home键"的项目,旨在提供一种方法来拦截和处理Home键事件,以实现更复杂的交互逻辑。 捕获Home键的关键在于重写`Activity`的`onKeyDown()`或`onBackPressed()`方法。在`onKeyDown()`...
在Android中,还有一些特殊的按键事件,如BACK键、HOME键、MENU键等。这些系统级的按键处理需要特别注意,因为它们涉及到应用的导航和退出逻辑。例如,处理BACK键通常是为了防止用户意外退出应用: ```java @...
在Android开发中,屏幕触控事件(MotionEvent)和按键事件(KeyEvent)是构建用户交互界面不可或缺的部分。本文将深入探讨这两个事件系统,以及如何实现拖动图片和通过连按两次后退键退出应用程序的功能。 首先,...
此外,`keyTest.apk`还可能提供了对特殊键值的测试,比如BACK键、HOME键、搜索键等,这些键在Android中有着特殊的含义和处理方式。通过这个工具,开发者可以确保自己的应用在处理这些系统级键值时不会出现意外的行为...
Android为开发者提供了多种处理按键事件的方法,包括硬键和软键(虚拟键),这些方法允许我们对用户的输入进行精确控制。 1. **监听器接口** Android 提供了 `View.OnKeyListener` 接口,用于监听视图上的按键事件...
在Android系统中,Home键、菜单键(在某些设备上是多任务键)和返回键是用户界面的重要组成部分,它们提供了导航和操作的基本方式。然而,在特定的应用场景下,如开发特殊应用或游戏时,开发者可能需要屏蔽这些系统...
尽管Fragment没有直接的`onBackPressed()`方法,但可以通过监听`onOptionsItemSelected()`中的`android.R.id.home`来模拟BACK键行为: ```java @Override public boolean onOptionsItemSelected(MenuItem item) { ...
综上所述,这段代码示例为我们展示了如何在Android应用开发中处理Back按键事件,包括按键事件的基本处理、防止误操作的设计思路、Toast消息的显示、线程控制以及Activity生命周期管理等方面的知识点。这对于理解...
然而,当一个Dialog弹出时,它会成为当前的焦点,导致Activity的Back事件无法被正常捕获。这时,我们就需要采取一些策略来解决这个问题。 首先,我们来回顾一下在没有Dialog弹出时,Android Activity中常见的三种...
在Android开发中,`setOnKeyListener`是一个非常重要的事件监听器,它允许开发者对用户在设备上的按键事件进行处理。这个事件通常用于监听物理按键或者是软键盘上的按键按下、释放等动作。理解并熟练运用`...
然而,当一个对话框(dialog)显示在Activity之上时,正常的Activity生命周期方法,如`onKeyDown`、`onKeyUp`、`onBackPressed`或`dispatchKeyEvent`,将无法捕获到back键事件,因为此时焦点在dialog上。这个问题...
在ExitActivity中,我们需要重写onKeyDown()方法来捕获硬件返回键的按下事件。在该方法中,我们可以记录下第一次点击的时间,并设置一个短暂的延迟,比如2秒。如果在这2秒内再次按下返回键,那么我们就认为用户确实...
在Android开发中,用户通常通过Back键来返回上一界面或退出应用。然而,有时开发者希望用户在连续点击两次Back键后才真正退出应用,以防止意外退出。本篇文章将详细解析这一功能的实现方法。 首先,我们来看第一种...
首先,Android中的按键事件主要分为两种类型:硬件按键和软件按键(如屏幕上的触摸按钮)。硬件按键包括常见的电源键、音量键等,而软件按键则常见于虚拟键盘上的按键。 1. **事件监听**: 在Android中,我们通常...