背景:
在安卓开发过程中,点击事件的处理是无可避免的,我们希望的是,用户点击一次,我们实现对应的一次点击事件,但是用户的操作是不可预估的,有时候往往会出现连点的情况,而我们又不希望同一事件短时间内重复触发。
实现:
public abstract class OnSingleClickListener implements View.OnClickListener {
private long mIntervalTime = 2000;
private long mLastClickTime = 0;
public OnSingleClickListener() {}
public OnSingleClickListener(long intervalTime) {
this.mIntervalTime = intervalTime;
}
@Override
public final void onClick(View v) {
long currentClickTime = System.currentTimeMillis();
if (currentClickTime - mLastClickTime > mIntervalTime) {
mLastClickTime = currentClickTime;
onSingleClick(v);
} else {
ToastUtil.showToast("请勿重复点击", 2000);
}
}
public abstract void onSingleClick(View v);
}
其中ToastUtil的实现可参考:安卓Toast避免重复显示,接下来只需直接使用即可。
mBinding.btnStart.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
// 需要处理的操作
}
});