Android組件防止重複點擊處理
Android button等組件很多情況需要過濾多餘的重複點擊事件,節省重複網絡訪問等定製化邏輯處理
首先定義一個簡單的抽象類:
/**
* 防止重複點擊
*/
public abstract class NoRepeatClickListener implements OnClickListener {
//默認最小間隔時間(可根據需求自行修改)
public static final int MIN_CLICK_DELAY_TIME = 1300;
private long lastClickTime = 0;
private int minDelayTime = MIN_CLICK_DELAY_TIME;
/**修改默認最小間隔時間
* @param minDelayTime
*/
public NoRepeatClickListener() {
}
public NoRepeatClickListener(int minDelayTime) {
this.minDelayTime = minDelayTime;
}
protected abstract void onNoRepeatClick(View v);
@Override
public void onClick(View v) {
long currentTime = Calendar.getInstance().getTimeInMillis();
if (currentTime - lastClickTime > minDelayTime) {
lastClickTime = currentTime;
onNoRepeatClick(v);
}
}
}
調用如下使用:
mBtnBind.setOnClickListener(new NoRepeatClickListener(4000) {
@Override
protected void onNoRepeatClick(View v) {
//點擊事件執行代碼
}
});