本文实例为大家分享了java用arraycopy实现多击事件的3种方法,供大家参考,具体内容如下
1、双击事件的实现
我们规定两次点击的事件间隔在500毫秒内为双击事件,这一值可以随意限定。
1
2
3
4
5
6
7
8
9
10
11
12
|
bt_click.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { if (startTime!= 0 ){ long endTime = System.currentTimeMillis(); if (endTime-startTime< 500 ){ Toast.makeText(getApplicationContext(), "点击了两下" , 0 ).show(); } } startTime = System.currentTimeMillis(); } }); |
2、arraycopy用法
arraycopy是用于数组复制的一个函数
我们先来看一个arraycopy的小例子
1
2
3
4
5
6
7
8
9
10
11
|
//静态初始化两个长度不同的数组 int src[] = { 1 , 2 , 3 , 4 , 5 , 6 }; int dest[] = { 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 }; //将数组src的4个元素copy到数组dest中 System.arraycopy(src, 1 ,dest, 2 , 4 ); //输出数组dest for ( int i= 0 ;i< 10 ;i++) { System.out.println(dest[i]); } |
输出结果
由结果我们可以看出arraycopy的用法
参数:
1.原数组(要被拷贝的数组)
2.原数组的拷贝起始位置索引值
3.目标数组(原数组的数据—拷贝–>目标数组)
4.目标数组接受值的起始索引位置
5.拷贝的长度
-
3、多击事件的实现
1
2
3
4
5
6
7
8
9
10
11
12
|
private long [] mHits = new long [ 3 ]; bt_many_click.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { System.arraycopy(mHits, 1 , mHits, 0 , mHits.length- 1 ); mHits[mHits.length- 1 ] = SystemClock.uptimeMillis(); if (mHits[mHits.length- 1 ]-mHits[ 0 ]< 500 ){ //响应了一个三击事件 Toast.makeText(getApplicationContext(), "点击了三下!!!!" , 0 ).show(); } } }); |
mHits 长度为3的数组(即多击次数),最后一位 mHits[mHits.length-1] 存储每次点击的时间
每点击一次 arraycopy一次
当点击够了3次 即mHits[0]有值后判断 最后一次点击和第一次点击的时间间隔,小于我们限定的时间则判定为三击。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。