Android 防快速重复点击

在Android开发中,经常遇到重复多次点击按钮,导致界面跳转的时候,弹窗多个相同的界面,这样很影响用户体验,那么,我们应该怎么处理比较好呢?

其实处理这个问题非常简单,直接上代码吧

先写一个工具类

public class Utils {
    private final static long DEFAULT_TIME = 1000;

    public static boolean isInvalidClick(@NonNull View target) {
        return isInvalidClick(target, DEFAULT_TIME);
    }

    /**
     * @param target      防止多次点击的View
     * @param defaultTime 超时时间
     * @return
     */
    public static boolean isInvalidClick(@NonNull View target, @IntRange(from = 0) long defaultTime) {
        long curTimeStamp = System.currentTimeMillis();
        long lastClickTimeStamp = 0;
        Object o = target.getTag(R.id.invalid_click);
        if (o == null) {
            target.setTag(R.id.invalid_click, curTimeStamp);
            return false;
        }
        lastClickTimeStamp = (Long) o;
        boolean isInvalid = curTimeStamp - lastClickTimeStamp < defaultTime;
        if (!isInvalid)
            target.setTag(R.id.invalid_click, curTimeStamp);
        return isInvalid;
    }
}

values下,新建一个ids.xml

<resources>
    <item name="invalid_click" type="id" />
</resources>

然后就可以使用了

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (Utils.isInvalidClick(v, 5000))
                    return;

                Toast.makeText(MainActivity.this, "hello world!", Toast.LENGTH_SHORT).show();
            }
        });

代码下载

猜你喜欢

转载自blog.csdn.net/qq_14876133/article/details/82855843