美文网首页
防止快速点击重复操作

防止快速点击重复操作

作者: 微笑中的你 | 来源:发表于2020-06-30 10:11 被阅读0次

思路:
点击的都是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);
            }
        });

相关文章

网友评论

      本文标题:防止快速点击重复操作

      本文链接:https://www.haomeiwen.com/subject/luutqktx.html