常见场景:有时候用户双击控件后,才希望客户端响应。
原理:用户点击一次后,判断最后一次点击距离第一次的时间,如果小于500毫秒,则为双击,同理,三次点击,四次点击……
看看Android自身是如何处理这样的事件的:
long[] mHits = new long[3];
public void click(View view){
System. arraycopy(mHits, 1, mHits, 0, mHits.length-1);
mHits[ mHits. length-1] = SystemClock. uptimeMillis();
if ( mHits[0] >= (SystemClock. uptimeMillis()-500)) {
Toast. makeText(this,"hello world from TreeClcik", 1).show();
}
}
好了,三击事件已经写完了,只要把数组长度改成2,就是双击事件了,接下来分析一下代码。
1:定义一个数组,几击就定义数组长度为几。
2:开始数组每个元素都是默认的0,点击一下后,把数组的每个元素都向前copy一位,把当前点击的时间放入数组最后一位。
例:
第一次click: 0 0 0;
第二次click: 0 111 112;
第三次click 111 112 113;
通过判断数组第一位的值是不是大于最后一次点击时间减于我们设置的时间。