思路:
点击的都是view,记录第一次点击的时间,然后在1秒,2秒。。。内的点击事件设置无效,所以要实现系统的单击事件进行拦截
View 点击的控件
lastClickTime 上次点击时间
internal 允许间隔多久后点击有效
cur 此次点击时间
public abstract class SingleClickListener implements View.OnClickListener {
//间隔时间
private int internal = 1000;
private long lastClickTime;
public SingleClickListener(){
super();
}
public SingleClickListener(int internal) {
this();
this.internal = internal;
}
public abstract void onSingleClick(View view);
@Override
public void onClick(View v) {
//在间隔时间 外 才执行
if (!isQuicklyClick()) {
onSingleClick(v);
}
}
/**
* 是在 间隔内
* @return boolean
*/
private boolean isQuicklyClick() {
long cur = System.currentTimeMillis();
boolean s = cur - lastClickTime < internal;
lastClickTime = cur;
return s;
}
}
登录页 点击 注册按钮 跳转到注册页(没有设置singleTop)
OnClickListener 1 秒内快速多次点击,会跳转多次,产生多个注册页
SingleClickListener 1 秒内快速多次点击,只会跳转 1 次
tvToRegister.setOnClickListener(new SingleClickListener() {
@Override
public void onSingleClick(View view) {
ClickTool.startActivity(LzLoginActivity.this, LzRegisterActivity.class);
}
});
网友评论