前言
为了防止“按钮”的点击事件在短时间内多次点击从而触发了多次处理操作;
比如:快速点击“登录按钮”发送了多次登录接口,导致程序在短时间内进行多次数据提交or数据处理,这样的体验就不太好了。
方法1
判断用户点击按钮间隔时间,如果间隔时间太短,则认为是无效操作,否则进行相关业务处理
/**
* 判断两次点击事件的间隔
*/
public class ClickHelper {
private static long lastClickTime = 0;
/**
* 判断事件出发时间间隔是否超过预定值
* 如果小于间隔(目前是1000毫秒)则返回true,否则返回false
*/
public static boolean isFastDoubleClick() {
long time = System.currentTimeMillis();
long timeD = time - lastClickTime;
if (0 < timeD && timeD < 1000) {
return true;
}
lastClickTime = time;
return false;
}
}
方法2
判断用户点击按钮间隔时间,同时判断按钮id;
public class ClickHelper {
private static long lastClickTime = 0;
private static String lastButtonId = null;
/**
* 判断事件出发时间间隔是否超过预定值
* 如果小于间隔(目前是1000毫秒)则返回true,否则返回false
*/
@MainThread
public static boolean isFastDoubleClick(final String buttonId) {
long time = System.currentTimeMillis();
long timeD = time - lastClickTime;
if (TextUtils.equals(lastButtonId, buttonId) && 0 < timeD && timeD < 500) {
return true;
}
lastClickTime = time;
lastButtonId = buttonId;
return false;
}
}
调用demo
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (ClickHelper.isFastDoubleClick()) {//连续点击
return;
}
...//此处添加点击按钮后的触发事件处理
}
});