本文共 1476 字,大约阅读时间需要 4 分钟。
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); } 2、重写onBackPressed方法 而对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写onBackPressed方法即可,代码如下 @Override public void onBackPressed() { // 这里处理逻辑代码,大家注意:该方法仅适用于2.0或更新版的sdk return;}
当然除了检测onKeyDown,还可以检测onKeyUp。
下面就这个动作,贴出点击两次出去程序的代码。
private long firstTime = 0;
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { // TODO Auto-generated method stub switch(keyCode) { case KeyEvent.KEYCODE_BACK: long secondTime = System.currentTimeMillis(); if (secondTime - firstTime > 2000) { //如果两次按键时间间隔大于2秒,则不退出 Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show(); firstTime = secondTime;//更新firstTime return true; } else { //两次按键小于2秒时,退出应用 System.exit(0); } break; } return super.onKeyUp(keyCode, event); }@Override
public void onBackPressed() { if (mBackKeyPressedTimes == 0) { Toast.makeText(this, "再按一次退出程序 ", Toast.LENGTH_SHORT).show(); mBackKeyPressedTimes = 1; new Thread() { @Override public void run() { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } finally { mBackKeyPressedTimes = 0; } } }.start(); return; else{ this.activity.finish(); } } super.onBackPressed(); }转载地址:http://qkegi.baihongyu.com/