美文网首页
Android 一个好用的防止重复点击的工具类

Android 一个好用的防止重复点击的工具类

作者: 坑逼的严 | 来源:发表于2021-09-10 10:35 被阅读0次

    先说明,我不是原创,我都不记得从哪抄的了很久了,用了4年感觉不错,今天看有人还对防止重复点击没有好的解决方案,所以发到网上记录一下,大牛们请绕道。

    /**
     * 防抖动点击
     *
     * @author yanjin
     */
    public class AntiShakeUtils {
    
        private final static long INTERNAL_TIME = 1000;
    
        /**
         * Whether this click event is invalid.
         *
         * @param target target view
         * @return true, invalid click event.
         * @see #isInvalidClick(View, long)
         */
        public static boolean isInvalidClick(@NonNull View target) {
            return isInvalidClick(target, INTERNAL_TIME);
        }
    
        /**
         * Whether this click event is invalid.
         *
         * @param target       target view
         * @param internalTime the internal time. The unit is millisecond.
         * @return true, invalid click event.
         */
        public static boolean isInvalidClick(@NonNull View target, @IntRange(from = 0) long internalTime) {
            long curTimeStamp = System.currentTimeMillis();
            long lastClickTimeStamp = 0;
            Object o = target.getTag(R.id.last_click_time);
            if (o == null){
                target.setTag(R.id.last_click_time, curTimeStamp);
                return false;
            }
            lastClickTimeStamp = (Long) o;
            boolean isInvalid = curTimeStamp - lastClickTimeStamp < internalTime;
            if (!isInvalid)
                target.setTag(R.id.last_click_time, curTimeStamp);
            return isInvalid;
        }
    }
    
    

    调用也很简单,比如我们在点击事件中

    @Override
        public void onClick(View v) {
            super.onClick(v);
            try {
                 if (v == location_address) {
                    if(AntiShakeUtils.isInvalidClick(v)){
                        return;//防止重复点击
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    

    直接返回
    对了,考代码的时候是不是有个id属性缺失?来,给你补上

    <item name="last_click_time" type="id" />
    

    放到ids.xml下就可以啦

    相关文章

      网友评论

          本文标题:Android 一个好用的防止重复点击的工具类

          本文链接:https://www.haomeiwen.com/subject/nbmgwltx.html