项目实战:超实用小工具isFastClick解决重复点击按钮问题

相信大家在项目开发中都遇到过这种case,点击按钮时,由于手机一时卡顿或者手速过快,造成按钮重复多次点击,跳转生成多个Activity(然后一个个关)或者其他重复操作。

现在,就让我们通过几行代码一劳永逸的解决它。

小工具的核心思想就是借助System.currentTimeMillis()计算多次点击按钮的时间差,如果这个时间差很小,我们就认为这是无效的重复点击。
封装一个Utils工具类(以后还会有更多更好的工具哦),isFastClick方法寥寥数行核心代码:

public class Utils {
    private static long lastClickTime;

    public static boolean isFastClick() {
        long time = System.currentTimeMillis();
        long timeD = time - lastClickTime;
        if (0 < timeD && timeD < 800) {
            return true;
        }
        lastClickTime = time;
        return false;
    }
}

开发好小工具,下面让他大显身手。
主要就是两种场景,
第一种,从架构级别的整体角度,我让所有Activity的父类BaseActivity实现OnClickListener接口,重写onClick方法,在方法中使用isFastClick():

public abstract class BaseActivity extends Activity implements View.OnClickListener{
···
    @Override
    public void onClick(View v) {
        if (Utils.isFastClick()) {
            return;
        }
    }

这样,子类就不必实现OnClickListener接口,只需要重写父类的onClick方法,在方法中调用父类的onClick即可。

public class MainActivity extends BaseActivity {
···
    @Override
    public void onClick(View v) {
        super.onClick(v);
        switch (v.getId()) {
            case R.id.mvp_btn_main:
                gotoNextActivity(LoginActivity.class);
                break;
···

第二种场景,缩小到到局部匿名内部类的onClick方法中,这时直接调用Utils的isFastClick方法即可。

mFabBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Utils.isFastClick();
                Snackbar.make(v,"权兴权意,品质为真",Snackbar.LENGTH_SHORT)
                        .setAction("Cancel", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                Utils.isFastClick();
                                Toast.makeText(FloatingActionBarActivity.this,"Cancel-onClick.",Toast.LENGTH_SHORT).show();
                            }
                        }).show();
```

在项目中所有onClick处引入isFastClick判断,一劳永逸的解决按钮重复多次点击问题,从此,xx再也不用担心我们的学习啦~


原创不易,转载请注明出处哈。
权兴权意
产品可以更优雅~


项目源代码,欢迎提建议(star)。
https://github.com/HXQWill/QuanStudy/commit/5ce1a6f6b1f775429aa2977c7735d3e2d6b87d57#diff-486f1b5424f9b8f32ae23a9fef2529b4



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值