/**
* 主要是处理点击事件防抖的
* @author
*
*/
public class ClickHelper implements OnClickListener {
/** 默认防抖时间200毫秒 */
private static final int MIN_CLICK_DELAY_TIME = 200;
private long mLastClickTime;
private OnClickListener mL;
private long mDelayedTime = MIN_CLICK_DELAY_TIME;
public ClickHelper(OnClickListener l) {
mL = l;
}
/**
* 设置防抖延迟时间
* @param delayedTime
*/
public ClickHelper setDelayedTime(long delayedTime){
mDelayedTime = delayedTime;
return this;
}
@Override
public void onClick(View v) {
//作用是如果在200毫秒内一直点击,只响应最开始的200毫秒
long curClickTime = System.currentTimeMillis();
if (Math.abs(curClickTime - mLastClickTime) >= mDelayedTime) {
if (mL != null) {
mL.onClick(v);
}
}
mLastClickTime = curClickTime;
}
}
使用方法:
View : 你要进行 防抖操作的按键
View.setOnClickListener(new ClickHelper(this));