您的位置:首页 > 移动开发 > Android开发

Android控件的两次及多次点击事件

2016-05-16 11:10 369 查看
自己模拟了一个Button的双击事件,想到三击事件要怎么写呢?通过查看Google大牛的多次点击的事件,发现我的学渣真是难以望其项背。。。

多次点击事件的原理:记录每次点击事件的当前时间,判断最后一次点击与第一次点击事件的时间的差值,如果小于500ms(可以自己定义这个值),认为是多次点击事件。下面以3次点击事件为例写一个代码。

1,mHits数组长度相当于点击点击次数。也就是说现在数组长度为3,我们可以监听快速点击3次的事件。

2,System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);数组的复制,第一个参数:要被拷贝的数组;第二个参数:从哪个位置开始拷贝(这里就是从1开始);第三个参数:目标数组;第四个参数:从目标数组的哪个位置开始存放(这里是从0开始);第五个参数:拷贝的长度。通过这个方法,我们实现了对每一个点击事件的时间进行记录,可以判断任意连续3次点击是否视为3击事件。

3,if (mHits[0] >= (mHits[mHits.length - 1] - 500)){}:这个用来判断是否是3击事件 ,判断数组中下标为2的点击事件的时间与数组中下标为0的点击事件的时间差值是否小于500;若小于500认为是3击事件,处理写在{}中;否则不为3击事件。

package cn.com.cyj.doubleclick;

import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

// 数组长度代表点击次数
long[] mHits = new long[3];

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/**
* 双击事件
* @param v
*/
public void click(View v) {
// 数组依次先前移动一位
System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);
mHits[mHits.length - 1] = SystemClock.uptimeMillis();// 开机后运行时间
if (mHits[0] >= (mHits[mHits.length - 1] - 500)) {
Toast.makeText(this, "3连击", Toast.LENGTH_LONG).show();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息