Android 中双击退出

来源:互联网 发布:linux装tensorflow 编辑:程序博客网 时间:2024/06/07 12:53

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">原文地址:http://www.cnblogs.com/shang53880/p/3578752.html</span>

在很多应用中都有这种做法,连续点击两次才退出程序,目的是为了防止用户不小心点击到了返回键而退出程序了,添加了一次用户确认的过程

方法1:

在代码中点击按钮时将标志位置为true,如果在N秒(设置的时间间隔)内点击,因为标致位为true,所以会退出应用,同时做一个延时2秒的消息处理,两秒后将标志位还原,就意味着两秒后点击和刚开始点击是一样的效果。

@Override    public void onClick(View v) { //响应某个控件的onClick事件<pre name="code" class="java">       exit();
} private static boolean isExit = false; private void exit() { if(!isExit) { isExit = true; Toast.makeText(this, "在按一次退出程序", Toast.LENGTH_SHORT).show(); new Timer().schedule(new TimerTask() { @Override public void run() { isExit = false;//超时后将标志更改为false } }, 2000); } else { finish(); } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) {//物理返回键处理 if(keyCode == KeyEvent.KEYCODE_BACK) { exit(); } return false; }



方法二:

使用数组记录点击事件的时间,判断时间间隔,而要实现多击事件,只需修改数组长度N即可

/** * 双击事件、多击事件 *///存储时间的数组
        int N=2;//双击事件long[] mHits = new long[N];public void doubleClick() {// 双击事件响应/** * arraycopy,拷贝数组  * src 要拷贝的源数组 * srcPos 源数组开始拷贝的下标位置 * dst 目标数组 * dstPos 开始存放的下标位置 * length 要拷贝的长度(元素的个数) * *///实现数组的移位操作,点击一次,左移一位,末尾补上当前开机时间(cpu的时间)System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);mHits[mHits.length - 1] = SystemClock.uptimeMillis();//双击事件的时间间隔500msif (mHits[0] >= (<span style="font-family: Arial, Helvetica, sans-serif;">mHits[mHits.length - 1]</span> - 500)) {                     finish();//响应双击事件}}


0 0
原创粉丝点击