1、连续点击两下退出程序
private long exitTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
2、捕捉返回键,点击返回,退出了当前界面
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
Toast.makeText(getApplicationContext(), "点击了返回", Toast.LENGTH_SHORT).show();
}
return super.onKeyDown(keyCode, event);
}
onBackPressed()(方法不再描述,写多了,开发者选不好用哪个)
3、捕捉返回键,点击返回,return ture;表示消耗了当前事件,不退出当前界面
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
Toast.makeText(getApplicationContext(), "点击了返回", Toast.LENGTH_SHORT).show();
return true;//表示消耗了当前事件
}
return super.onKeyDown(keyCode, event);
}
4、
event.getRepeatCount() == 0这句话有点多余,可以放在里面不用管他。
PS:捕捉返回键和捕捉home键不一样,home键的捕捉需要通过系统广播。如果看到捕捉其它键的时候,一点要小心有没有方法3的reuturn true,因为有的代码中有,就会把一些事件个消耗掉了。之前做视频播放捕捉声音键的时候,就因为有个return true,使声音一直不能调节。