1. 程式人生 > >Android 防止在N秒內產生多次點選事件(乾貨)

Android 防止在N秒內產生多次點選事件(乾貨)

/**
 * Created by 蔣 on 2018/8/20.
 * 防止多次點選的單擊事件
 */
public abstract class NoMoreClickListener implements View.OnClickListener {
    private int MIN_CLICK_DELAY_TIME = 3000;//多少秒點選一次 預設3秒
    private long lastClickTime = 0;

 public NoMoreClickListener() {
    
    }   
    /**
     * 設定多少秒之內
     *
     * @param time
     */
    public NoMoreClickListener(int time) {
        this.MIN_CLICK_DELAY_TIME = time;
    }
    @Override
    public void onClick(View view) {
        long currentTime = Calendar.getInstance().getTimeInMillis();
        if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) {
            lastClickTime = currentTime;
            OnMoreClick(view);
        } else {
            OnMoreErrorClick();
        }
    }

    /**
     * 在N秒之內的 ==1 次點選回撥次方法
     *
     * @param view
     */
    public void OnMoreClick(View view) {

    }

    /**
     * 在N秒之內的 >= 2次點選回撥次方法
     *
     */
    public void OnMoreErrorClick() {

    }
}

使用:

btn.setOnClickListener(new NoMoreClickListener(2500) {
    @Override
    public void OnMoreClick(View view) {
        super.OnMoreClick(view);
        //平常的單擊事件處理
    }

    @Override
    public void OnMoreErrorClick() {
        //在N秒內點選大於2次會回撥此方法
    }
});