项目中有一个打赏的功能,测试妹子说点击几下就打赏几次,好吧,那我只能对Button的点击事件进行时间判断了。
我自己测试的方法有两种,其实效果都能实现。
第一种:
解决的思路如下:
1. 需要定义一个全局变量 lastClickTime, 用来记录最后点击的时间.
2. 每次点击前需要进行判断, 用lastClickTime 和当前时间想比较,并且更新最后点击时间,若小于临界值,则算无效点击,不触发事件
点击处理:
public void onClick(View v) {
// TODO Auto-generated method stub
if (Utils.isFastClick()) {
Toast.makeText(MainActivity.this,"连续点击才会出现", 1).show();
return ;
}else{
Toast.makeText(MainActivity.this,"第一次点击才会出现", 1).show();
}
}
});
事件判断:
private static long lastClickTime;
public synchronized static boolean isFastClick() {
long time = System.currentTimeMillis();
if ( time - lastClickTime < 500) {
return true;
}
lastClickTime = time;
return false;
}
第二种:
主要通过计时线程(防止在一定时间段内重复点击按钮)
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (flag) {
Log.i("wxz", "点击了一下");
Toast.makeText(MainActivity.this,"点了一次", 0).show();
setFlag();
// do some things
new TimeThread().start();
}
}
});
}
private synchronized void setFlag() {
flag = false;
}
/**
* 计时线程(防止在一定时间段内重复点击按钮)
*/
private class TimeThread extends Thread {
public void run() {
try {
Thread.sleep(2000);
flag = true;
} catch (Exception e) {
e.printStackTrace();
}
}
这两种方法,我都自己写过了,感觉都可以。
源码:
如果还有更好的方法,欢迎留言。