Button或其它控件的实现双击或者多击的操作

long[] mHits = new long[3];public void treeClick(View v){/**

  • arraycopy里面5个参数详解
  • 1.src the source array to copy the content. 拷贝的原数组 2.srcPos the starting index of the content in src. 是从源数组那个位置开始拷贝 3.dst the destination array to copy the data into. 拷贝的目标数组 4.dstPos the starting index for the copied content in dst. 是从目标数组那个位置开始去写 5.length the number of elements to be copied. 拷贝的长度*///拷贝数组操作System.arraycopy(mHits, 1, mHits, 0, mHits.length-1); mHits[mHits.length-1] = SystemClock.uptimeMillis(); // 将离开机的时间设置给数组的第二个元素,离开机时间 :毫秒值,手机休眠不算 if (mHits[0] >= (SystemClock.uptimeMillis()-500)) { // 判断是否多击操作 System.out.println("多击了..."); }}

原理图:long数组mHits 里面的值变化。



图可能看起来有点难理解,下面再解释一下。
第一击:即第一次点击的时候,记录第一次点击的时间比如说700ms,赋值到mHits[2]中保存起来
第二击:把mHits 数组里面的值更新一下,即mHits[1]保存第一次点击的时间(700ms),mHits[2]保存第二次点击的时间(900)。
第三击:同第二击,把mHits 数组里面的值再次更新。判断如果mHits[0]里面的值(第一次点击的时间)大于现在的时间减去500ms,代表这个控件在500ms中点击了3次,即三连击,多击操作。
我语文不好,解释的尽力了,望亲们可以理解。或者提一些建议3Q、

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 自定义双击事件 点击事件:在控件上按下,离开,有瞬间的停留。 双击事件:在单位时间内,双击。 多击事件:在单位时间...
    未见哥哥阅读 4,326评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,461评论 19 139
  • 一、系统自带Toast的源码分析 1. Toast的调用显示 学过Android的人都知道,弹出一个系统API吐司...
    笑说余生阅读 11,045评论 8 46
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 5,397评论 0 3
  • 好久没有写文,那或许是没空,更多的是没有心情。我写作时喜欢身心放松,喜欢一个人,没有人打搅,。可是,自从父亲住院以...
    炎炎冬日阅读 1,664评论 3 1