Android防暴力(多次)点击,亲测可直接使用
方法一:使用 RxJava 的 throttleFirst()
/**
* 防止重复点击
*
* @param target
* 目标view
* @param listener
* 监听器
*/
public static void preventRepeatedClick(final View target,
final View.OnClickListener listener) {
RxView.clicks(target).throttleFirst(1, TimeUnit.SECONDS)
.subscribe(new Observer<Object>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Object o) {
listener.onClick(target);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
方法二:工具类,用于判断是否快速点击
public class ClickUtil {
/**
* 两次点击按钮之间的点击间隔不能少于1000毫秒
*/
private static final int MIN_CLICK_DELAY_TIME = 1000;
/**
* 最后一次点击的时间
*/
private static long mLastClickTime = -1;
/**
* 是否为快速点击
*
* @return true:快速点击 false:非快速点击
*/
public static boolean isFastClick() {
boolean flag;
long curClickTime = System.currentTimeMillis();
if (curClickTime - mLastClickTime > MIN_CLICK_DELAY_TIME) {
flag = false;
} else {
flag = true;
}
mLastClickTime = curClickTime;
return flag;
}
}
工具类方法调用如下:
//多次点击直接返回
if (ClickUtil.isFastClick()) {
return;
}