点击返回键:弹出退出的对话框和双击两次返回键,退出
来源:互联网 发布:中国移动免流量软件 编辑:程序博客网 时间:2024/06/06 01:46
<1>点击返回键:弹出退出的对话框
package com.zking.administrator.app2;import android.app.AlertDialog;import android.content.DialogInterface;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.KeyEvent;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK ) { // 创建退出对话框 AlertDialog isExit = new AlertDialog.Builder(this).create(); // 设置对话框标题 isExit.setTitle("系统提示"); // 设置对话框消息 isExit.setMessage("确定要退出吗"); // 添加选择按钮并注册监听 isExit.setButton("确定", listener); isExit.setButton2("取消", listener); // 显示对话框 isExit.show(); } return false; } /**监听对话框里面的button点击事件*/ DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { switch (which) { case AlertDialog.BUTTON_POSITIVE:// "确认"按钮退出程序 finish(); break; case AlertDialog.BUTTON_NEGATIVE:// "取消"第二个按钮取消对话框 break; default: break; } } };}
<2>双击两次返回键,退出
第一种实现的基本原理就是,当按下BACK键时,会被onKeyDown捕获,判断是BACK键,则执行exit方法。
在exit方法中,会首先判断isExit的值,如果为false的话,则置为true,同时会弹出提示,并在2000毫秒(2秒)后发出一个消息,在Handler中将此值还原成false。如果在发送消息间隔的2秒内,再次按了BACK键,则再次执行exit方法,此时isExit的值已为true,则会执行退出的方法。
package com.zking.administrator.app2;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.KeyEvent;import android.widget.Toast;/** * Created by Administrator on 2017/6/17. */public class HHActivity extends Activity{ // 定义一个变量,来标识是否退出 private static boolean isExit = false; Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); isExit = false; } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_hh); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { exit(); return false; } return super.onKeyDown(keyCode, event); } private void exit() { if (!isExit) { isExit = true; Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); // 利用handler延迟发送更改状态信息 mHandler.sendEmptyMessageDelayed(0, 2000); } else { finish(); System.exit(0); } }}第二种实现方式,通过记录按键时间计算时间差实现:package com.gaolei.exitdemo;import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;import android.widget.Toast;public class MainActivity extends Activity { private long exitTime = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { exit(); return false; } return super.onKeyDown(keyCode, event); } public void exit() { if ((System.currentTimeMillis() - exitTime) > 2000) { Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); exitTime = System.currentTimeMillis(); } else { finish(); System.exit(0); } }}
阅读全文
0 0
- 点击返回键:弹出退出的对话框和双击两次返回键,退出
- android两次点击返回键退出和按钮退出对话框
- 点击两次返回键退出
- 应用的退出形式,双击返回键退出和对话框询问退出
- Android实现点击两次返回键退出
- Android 点击两次返回键退出程序
- Android实现点击两次返回键退出
- Android点击两次返回键退出程序
- Android实现点击两次返回键退出
- Android实现点击两次返回键退出
- Android 点击两次返回键退出程序
- Android:点击返回键两次退出程序
- 点击返回键两次退出程序
- Android实现点击两次返回键退出
- Android实现点击两次返回键退出
- 监听返回键、点击两次退出程序
- Android实现点击两次返回键退出
- Android实现点击两次返回键退出
- IO流
- 共享内存
- 软件工程(C编码实践篇)学习总结
- leetcode215. Kth Largest Element in an Array
- ESL中的记号
- 点击返回键:弹出退出的对话框和双击两次返回键,退出
- 欢迎使用CSDN-markdown编辑器
- POJ 2102 Incredible! Impossible! 笔记
- 商城项目实战01:使用maven构建工程
- HTTP 协议中的 Transfer-Encoding
- 计算机图形学基础(1)——画线算法
- Intellij idea远程debug连接tomcat,实现单步调试
- Android 双击退出键 退出返回主界面
- 网页端生成二维码的实现方式