首先,来解释一下这三个事件。
onKeyDown:是当某个按键被按下是触发。所以也有人在点击返回键的时候去执行该方法来做判断。(该方法只是android 1.0~ android 2.1)
捕获判断代码:
@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);
}
onKeyUp:这个方法是当某个按键被按下后,抬起的时候执行,其实跟onKeyDown没什么差别
onBackPressed:在android 2.0开始多出了关于返回键的单独的事件方法,可以在该方法里面执行当点击返回键的时候做什么...所以,后期都是用这个方法比较多。
如果要考虑版本兼容的话,代码可这么写:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// 是否触发按键为back键
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
return true;
} else {// 如果不是back键正常响应
return super.onKeyDown(keyCode, event);
}
}
点击两次返回键退出,防止误操作
//退出时间
privatelongcurrentBackPressedTime= 0;
//退出间隔
privatestaticfinalintBACK_PRESSED_INTERVAL= 2000;
//重写onBackPressed()方法,继承自退出的方法
@Override
publicvoidonBackPressed() {
//判断时间间隔
if(System.currentTimeMillis()-currentBackPressedTime>BACK_PRESSED_INTERVAL) {
currentBackPressedTime= System.currentTimeMillis();
Toast.makeText(this,"再按一次返回键退出程序", Toast.LENGTH_SHORT).show();
}else{
//退出
finish();
}
}
文章部分内容转载自:http://www.csdn123.com/html/mycsdn20140110/4c/4cd69cc9f3b442e5c6eb7f9eaf49ef80.html