安卓实战中防止Button的频繁点击多次执行点击事件和点击切换文字

情况一:

用户非常快的双击按钮 按钮事件相当于二次 
怎么控制一个Button俩次点击的时间大于2s

  • 每次点击事件执行之前 先判断俩次点击间隔是否大于2000毫秒
    public abstract class OnClickEvent implements View.OnClickListener {
        private static long lastTime;
        public abstract void singleClick(View v);
        private long delay;
        public OnClickEvent(long delay) {
            this.delay = delay;
        }
    
        @Override
        public void onClick(View v) {
            if (onMoreClick(v)) {
                return;
            }
            singleClick(v);
        }
    
        public boolean onMoreClick(View v) {
            boolean flag = false;
            long time = System.currentTimeMillis() - lastTime;
            if (time < delay) {
                flag = true;
            }
            lastTime = System.currentTimeMillis();
            return flag;
        }
    }
    上面是对点击事件进行处理: 
    具体使用:
    singleClick.setOnClickListener(new OnClickEvent(delayTime) {
                @Override
                public void singleClick(View v) {
                    Snackbar.make(v,"防止重复点击额",Snackbar.LENGTH_SHORT).show();
    
                }
            });

    情况二:点击button来回切换文字

    上述的情况比如淘宝的购物车里面就有出现,我这里也是以 
    *完成/编辑 
    来回切换的。

    public class MainActivity extends AppCompatActivity {
    
        @BindView(R.id.single_click)
        Button singleClick;
        @BindView(R.id.change_click)
        Button changeClick;
        //通过标志来动态显示文字
        private int flag=0;
        //延迟时间
        private  int delayTime=2000;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ButterKnife.bind(this);
            doEvent();
        }
    
        private void doEvent() {
            singleClick.setOnClickListener(new OnClickEvent(delayTime) {
                @Override
                public void singleClick(View v) {
                    Snackbar.make(v,"防止重复点击额",Snackbar.LENGTH_SHORT).show();
    
                }
            });
            changeClick.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    flag = (flag + 1) % 2;//点击然后改变flag的值
                    changeClick.setText(flag >0?"编辑":"完成");
                }
            });
        }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值