防止多次响应的onClickListener

对控件设置点击事件的时候,控件总是能对所有的点击事件进行响应,短时间内响应多次个人觉得挺不合理的

public abstract class NoDoubleClickListener implements View.OnClickListener {
    private long mMillis;
    private int mViewID;
    // default click interval 500ms
    private int mInterval = 500;

    public NoDoubleClickListener() {
    }

    public NoDoubleClickListener(int interval) {
        mInterval = interval;
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == mViewID) {
            if (System.currentTimeMillis() - mMillis > mInterval) {
                onNoDoubleClick(v);
                mMillis = System.currentTimeMillis();
                mViewID = v.getId();
            }
        } else {
            mMillis = System.currentTimeMillis();
            mViewID = v.getId();
            onNoDoubleClick(v);
        }
    }

    public void setInterval(int interval) {
        mInterval = interval;
    }

    public abstract void onNoDoubleClick(View view);
}

用法如下,创建对象

private NoDoubleClickListener noDoubleClickListener = new NoDoubleClickListener() {
        @Override
        public void onNoDoubleClick(View view) {
         switch (view.getId()) {
                case R.id.btn_activity_sure:
                      //event
                    break;
                default:
                    break;
            }
        }
    };

对Button设置监听

  findViewById(R.id.btn_activity_sure).setOnClickListener(noDoubleClickListener);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值