项目实战:超实用小工具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

你可能感兴趣的:(项目实战:超实用小工具isFastClick解决重复点击按钮问题)