Android【防抖操作的工具类】

Android【防抖操作的工具类】

防抖

public class OneClickUtil {
   
    private String methodName;
    public static final int MIN_CLICK_DELAY_TIME = 1000;
    private long lastClickTime = 0;

    public OneClickUtil(String methodName) {
   
        this.methodName = methodName;
    }

    public String getMethodName() {
   
        return methodName;
    }

    public boolean check() {
   
        long currentTime = Calendar.getInstance().getTimeInMillis();
        if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) {
   
            lastClickTime = currentTime;
            return false;
        } else {
   
            return true;
        }
    }
}

防抖

public class AntiShake {
   
    private List<OneClickUtil> utils = new ArrayList<>();

    public boolean check(Object o) {
   
        String flag = null;
        if(o == null)
            flag = Thread.currentThread().getStackTrace()[2].getMethodName();
        else
            flag = o.toString();
        for (OneClickUtil util : utils) {
   
            if (util.getMethodName().equals(flag)) {
   
                return util.check();
            }
        }
        OneClickUtil clickUtil = new OneClickUtil(flag);
        utils.add(clickUtil);
        return clickUtil.check();
    }

    public boolean check() {
   
        return check(null);
    }
}

注意

(1) 声明 AntiShake util = new AntiShake(); 全局变量
(2) 每个Click方法第一行加入 if (util.check()) return;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2831.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mybatisplus iservice接口(iphone 8 plus怎么样)

    Mybatis-plus之IService的使用

    2022年4月10日
    129
  • 实例方法,类方法和静态方法的区别_python中类的所有实例方法

    实例方法,类方法和静态方法的区别_python中类的所有实例方法实例方法第一个参数是"self",表示实例对象,通过它传递实例的属性和方法。只能由实例调用类方法使用装饰器@classmethod,第一个参数可以是"cls&quo

    2022年8月2日
    8
  • 解决Windows有网络连接但是显示“无Internet”的问题

    引子最近电脑莫名其妙地出现了可以正常上网,但是任务栏上的网络图标显示“无Internet”的问题。如果不使用微软账户的话,这个问题其实没什么影响,但是如果使用微软账户,这个问题会导致所有与微软账户相关的软件无法登录,比如Microsoft365和Outlook邮箱。在网上找了很多帖子都没有解决,最终通过相关帖子的学习提供一种解决该问题的思路,如果有用,请不要吝惜你的点赞????如果你有更好的解决方案,欢迎评论分享思路要想知道这个问题的原因,首先我想到的是需要了解Windows网络感知的原理。通过查

    2022年4月7日
    378
  • SplitContainer的使用

    SplitContainer的使用作用:(Splitter的简化)使用 SplitContainer 控件可分隔容器(如 Form)的显示区域,并使用户可以调整已添加到 SplitContainer 面板中的控件的大小。当用户将鼠标指针移到拆分器上时,光标将发生变化,以指示可以调整 SplitContainer 控件内部的控件的大小。SplitContainer 也使设计时的控件放置更容易。例如,若要创建一个与Win

    2022年7月18日
    26
  • c语言List头文件和应用

    c语言List头文件和应用util_list.h#ifndef__UTIL_LIST__#define__UTIL_LIST__/*双链节点*/typedefstructlist_node{ list_node*prev; list_node*next;}LIST_NODE;/*单链节点*/typedefstructslist_node{ slist_node*ne

    2022年7月12日
    50
  • 几个关于silverlight的网站[通俗易懂]

    几个关于silverlight的网站[通俗易懂]1.  示例     http://silverlightnuggets.com/ 2. Silverlight示例    http://silverlight.net/community/communitygallery.aspx 3. http://silverlight.net/Learn/ 

    2022年10月19日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号