双击、多次点击(评论)
来源:互联网 发布:epsonl800清零软件 编辑:程序博客网 时间:2024/04/30 04:13
有的时候,我们需要实现双击响应,例如在应用首页双击退出应用,可以这么写:
private long clickTime = 0; //记录第一次点击的时间 //退出 private void exit() { if ((System.currentTimeMillis() - clickTime) > 2000) { ToastUtil.showToast(MainActivity.this, mToast, "再次点击退出程序"); clickTime = System.currentTimeMillis(); } else { //退出时清除application储存信息 clearApplication(); new DBManager(this).closeDB(); finish(); } }这么写无疑清晰易懂,不过有的时候也会出现比较奇葩的需求,比如我要点击4下才可以退出。。。那再按照上面的思路就比较恶心了,现在有一种奇葩 + 奇葩的解决方法,思路比较绕,虽然不知道是谁发明的,但是我好景仰:
private static long[] mHits = new long[3]; // 几次点击改成几 public void click(View view) { /** * 实现数组之间的复制 * 函数原型:public static voidarraycopy(Object src, int srcPos, Object dest, int destPos, int length) * src:源数组; * srcPos:源数组要复制的起始位置; * dest:目的数组; * destPos:目的数组放置的起始位置; * length:复制的长度。 */ System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1); mHits[mHits.length - 1] = SystemClock.uptimeMillis(); if (mHits[0] >= SystemClock.uptimeMillis() - 500) { Toast.makeText(this, "你点击了3次", Toast.LENGTH_SHORT).show(); } }
很简单对不对?核心代码就2行,我们来思考一下这个思路是怎么执行的:
第一次点击 0 0 0 =====> 0 0 1 //复制后2位00到000,变成000,修改最后一个下标 保存点击时间
第二次点击 0 0 1 =====> 0 1 2 //复制后2位01到001,变成011,修改最后一个下标 保存点击时间
第三次点击 0 1 2 =====> 1 1 3 //复制后2位12到012,变成122,修改最后一个下标 保存点击时间
每次点击都取出第一位的值,与系统当前时间判断,小于指定时间就算作点击成功,不需要考虑点击次数
明白了吧。。。。不需要考虑点击次数,因为数组已经帮你做了这件事,思路很惊艳。
再次膜拜作者,虽然我不知道作者是谁。
0 0
- 双击、多次点击(评论)
- Android双击,连续多次点击事件判断
- Wiki_Android_双击或多次点击事件
- 实现双击、多击(多次点击)功能
- android防止按钮多次点击和添加双击事件
- Android 双击以及连续多次点击事件系统自带判断方法
- Android 防止多次点击提交数据(文章或评论)代码片段
- android 防止多次点击
- 多次点击事件监听
- 防止多次点击
- android防止多次点击
- Android防止多次点击
- 实现多次点击效果
- 防止按钮多次点击
- 多次点击源码
- 防止按钮多次点击
- android 防止多次点击
- 防止按钮多次点击
- SOAPUI测试REST项目(五)——REST服务和WADL
- Spring中@Autowired注解、@Resource注解的区别 .
- HTTP 错误 500.19 - Internal Server Error
- 我的Android进阶之旅------>(全解析)屏幕尺寸,分辨率,像素,PPI之间到底什么关系?
- 二叉树的前序、中序、后序遍历的非递归方法 python
- 双击、多次点击(评论)
- java.lang.NoClassDefFoundError: javax/mail/*
- java中append()的方法
- oracle 由易到难源代码三
- SOAPUI测试REST项目(六)——REST服务和WADL
- ContentProvider内容提供器
- IOS中 Block简介与用法(一)
- Studio之widget类型及继承于Wiget类型控件的事件-----监听各个GUI控件的交互事件。
- 升级win10、安装visual studio 2015、学习C#