本文实例为大家分享了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]有值后判断 最后一次点击和第一次点击的时间间隔,小于我们限定的时间则判定为三击。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。