Android中OnkeyDown事件和OnBackPressed方法区别、兼容、使用
来源:互联网 发布:两个域名指向一个主机 编辑:程序博客网 时间:2024/04/29 07:47
在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(ml78.this,"返回键Back键测试",1).show();
return true;
}
return super.onKeyDown(keyCode, event);
}
而对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写onBackPressed方法即可,代码如下
@Override
public void onBackPressed() {
// 这里处理逻辑代码,大家注意:该方法仅适用于2.0或更新版的sdk
return;
}
同时还有一种情况,就是在以前开发的程序中使用的是onKeyDown方法,但是后续版本为了兼容OnBackPressed方法。就需要两者之间进行嵌套。具体的方法如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// 是否触发按键为back键
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
return true;
} else {// 如果不是back键正常响应
return super.onKeyDown(keyCode, event);
}
}
利用时间差方法完成两次返回键退出,防止误操作。
// 退出时间
privatelong currentBackPressedTime = 0;
//退出间隔
privatestatic finalintBACK_PRESSED_INTERVAL = 2000;
//重写onBackPressed()方法,继承自退出的方法
@Override
publicvoid onBackPressed() {
//判断时间间隔
if (System.currentTimeMillis()-currentBackPressedTime >BACK_PRESSED_INTERVAL) {
currentBackPressedTime = System.currentTimeMillis();
Toast.makeText(this,"再按一次返回键退出程序", Toast.LENGTH_SHORT).show();
} else {
// 退出
finish();
}
}
- Android中OnkeyDown事件和OnBackPressed方法区别、兼容、使用
- Android中OnkeyDown事件和OnBackPressed方法区别、兼容、使用
- OnkeyDown事件 和 OnBackPressed方法注意点
- OnkeyDown事件和OnBackPressed方法详解
- onBackPressed()和onKeyDown()、onKeyUp()使用和区别
- Android WebView的前进、后退、与刷新以及OnkeyDown事件 和 OnBackPressed方法注意点
- Android WebView的前进、后退、与刷新以及OnkeyDown事件 和 OnBackPressed方法注意点
- onKeyDown和onBackPressed
- onBackPressed() 与 onKeyDown的区别
- js中onkeydown事件,兼容IE…
- android中onKeyDown()事件的分析
- android 中OnKeyDown的事件获取顺序
- Android dispatchKeyEvent和onKeyDown事件的处理
- onBackPressed、onKeyDown、finish、onDestroy
- Android——onKeyDown与onBackPressed(未完)
- android中使用startactivityforresult跳转Activity后需要重写onBackPressed()方法
- 监听Back键, onBackPressed()和onkeyDown()都无效
- android中关于tabhost的返回键处理方法 onkeydown事件无效
- 反射实现JDBC封装
- 格雷戈里T.豪根的《有效的工作分解结构》免费阅读
- Android实战技巧:多线程AsyncTask(版本不同,有点差异)
- 加载rt3070sta.ko出现insmod: can't insert 'rt3070sta.ko': invalid module format问题
- POJ 1815 Friendship 最小割
- Android中OnkeyDown事件和OnBackPressed方法区别、兼容、使用
- Nginx学习(12)—核心结构(1)
- 学习计划
- 深入理解全局编录服务器GC
- redis 备份
- 存储过程
- CentOS 6下安装nodejs 0.9.0
- 最棒的10款MySQL管理工具
- Xcode制作静态库