1. 自定义的View.OnClickListener
我们可以创建一个自定义的点击监听器,其中包含一个防止重复点击的逻辑:
public abstract class OnSingleClickListener implements View.OnClickListener {
// 默认间隔时间
private static final long DEFAULT_INTERVAL = 1000L;
private long mLastClickTime = 0;
private long mInterval = DEFAULT_INTERVAL;
public OnSingleClickListener() {}
public OnSingleClickListener(long interval) {
this.mInterval = interval;
}
@Override
public final void onClick(View v) {
long currentClickTime = System.currentTimeMillis();
if (currentClickTime - mLastClickTime > mInterval) {
mLastClickTime = currentClickTime;
onSingleClick(v);
}
}
public abstract void onSingleClick(View v);
}
button.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
// 处理点击事件
}
});
2. Handler
private static final long CLICK_INTERVAL = 1000L;
private boolean isClicking = false;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!isClicking) {
isClicking = true;
// 处理点击事件
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
isClicking = false;
}
}, CLICK_INTERVAL);
}
}
});