在安卓开发中, 我们经常要对按键进行监听, 今天跟大家分享一下最常用的按下返回退出功能的实现.
如果没有对返回键设置监听, 通常按下一次返回键就会退出程序或退出某个界面, 这样是很不人性化的, 我们可以有两种处理方式:
按下返回键时弹出一个对话框 (AlertDialog), 再让用户选择是否退出 双击返回退出
下面分别介绍着两种实现方式
1. 按下返回键时弹出一个对话框 (AlertDialog), 再让用户选择是否退出
实现思路:
重写 onKeyDown 方法 在方法中, 判断返回按键被按下的时候创建一个对话框并显示 给对话框的按钮设置点击监听
代码示例:
- //重写onKeyDown方法,对按键(不一定是返回按键)监听public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) {//当返回按键被按下 AlertDialog.Builder dialog = new AlertDialog.Builder(context);//新建一个对话框 dialog.setMessage("确定要退出测试吗?");//设置提示信息 //设置确定按钮并监听 dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish();//结束当前Activity } }); //设置取消按钮并监听 dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //这里什么也不用做 } }); dialog.show();//最后不要忘记把对话框显示出来 } return false; }
这样, 就实现了点击返回按键时弹出对话框, 并交由用户处理退出的功能
2. 双击返回退出
实现思路:
重写 onKeyDown 方法 声明一个全局的布尔值 isExit, 默认为 false 第一次点击返回按键时, 弹出 Toast 提示, 并调用 exit() 方法 exit() 方法中, 判断 isExit 值, 并执行相应逻辑 (具体看代码吧, 原谅我真不知道怎么描述了……)
代码示例:
- //声明一个全局布尔值,默认为falsepublic boolean isExit = false;//重写onKeyDown方法,public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) {//当返回按键被按下 //调用exit()方法 exit(); } return false; }//被调用的exit()方法private void exit() { Timer timer;//声明一个定时器 if (!isexit) { //如果isExit为false,执行下面代码 isexit = true; //改变值为true Toast.makeText(TestActivity.this, "再按一次退出测试", Toast.LENGTH_SHORT).show(); //弹出提示 timer = new Timer(); //得到定时器对象 //执行定时任务,两秒内如果没有再次按下,把isExit值恢复为false,再次按下返回键时依然会进入if这段代码 timer.schedule(new TimerTask() { @Override public void run() { isexit = false; } }, 2000); } else {//如果两秒内再次按下了返回键,这时isExit的值已经在第一次按下时赋值为true了,因此不会进入if后的代码,直接执行下面的代码 finish(); } }
嗯, 就这样, 双击退出的功能也实现了, 如果看不懂, 建议大家自己写一遍就能明白逻辑了.
最后: 我也是新手 <( ̄3 ̄)> … 不知道怎么表达更清楚, 求大神轻轻的嘲讽, 关爱菜鸟, 人人有责!
还有, onKeyDown() 的 return 一直没搞太懂, 有没有大神能告知呢
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: