通过连续按两次back键,弹出Toast提示再按一次退出功能。关键代码如下:
第一种方式:
/** * 连续按两次返回键就退出 */ private int keyBackClickCount = 0; @Override protected void onResume() { super.onResume(); keyBackClickCount = 0; } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (keyCode == KeyEvent.KEYCODE_BACK) { switch (keyBackClickCount++) { case 0: Toast.makeText(this, getResources().getString(R.string.press_again_exit), Toast.LENGTH_SHORT).show(); Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { keyBackClickCount = 0; } }, 3000); break; case 1: mFrameTv.setVisibility(View.VISIBLE); mImgTv.setVisibility(View.VISIBLE); Animation anim = AnimationUtils.loadAnimation( MainActivity.this, R.anim.tv_off); anim.setAnimationListener(new tvOffAnimListener()); mImgTv.startAnimation(anim); break; default: break; } <span style="color:#ff0000;"> return true;</span> } else if (keyCode == KeyEvent.KEYCODE_MENU) { if (sm.isMenuShowing()) { toggle(); } else { showMenu(); } } return super.onKeyDown(keyCode, event); }
第二种方式:
/** * 连续按两次返回键就退出 */ private boolean isWaitingExit = false; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (keyCode == KeyEvent.KEYCODE_BACK) { if (isWaitingExit) { isWaitingExit = false; mFrameTv.setVisibility(0); mImgTv.setVisibility(0); Animation anim = AnimationUtils.loadAnimation( MainActivity.this, R.anim.tv_off); anim.setAnimationListener(new tvOffAnimListener()); mImgTv.startAnimation(anim); } else { Toast.makeText(this, getResources().getString(R.string.press_again_exit), Toast.LENGTH_SHORT).show(); isWaitingExit = true; Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { isWaitingExit = false; } }, 3000); return true; } return true; } else if (keyCode == KeyEvent.KEYCODE_MENU) { if (sm.isMenuShowing()) { toggle(); } else { showMenu(); } } return super.onKeyDown(keyCode, event); }
时间: 2024-10-30 08:28:30