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、
网友评论