Android防止按钮快速重复点击

在用户使用 Android 应用的时候,常常会出现过快且屡次点击同一按钮的状况,一方面这是由于应用或手机当前有些卡顿,另外一方面也多是因为不少应用并无设置按钮点击时的 selector 或者其它按钮响应方式(例如点击按钮时按钮放大,常见于游戏),致使用户误认为没有点击到当前按钮,固然,除了相对应的对应用进行优化和设置点击selector之外,咱们还能够作一些其它的工做,例如,判断按钮的 onClick 事件在规定事件段内只响应一次(在论坛的搜索功能中,咱们常见到每10秒才能够进行一次搜索的设置,这就在必定程度上减小了无效的网络访问量,减轻服务器压力,APP同理),就以下面代码所示:服务器

1、全局网络

    public class Utils {
        // 两次点击按钮之间的点击间隔不能少于1000毫秒
        private static final int MIN_CLICK_DELAY_TIME = 1000;
        private static long lastClickTime;
     
        public static boolean isFastClick() {
            boolean flag = false;
            long curClickTime = System.currentTimeMillis();
            if ((curClickTime - lastClickTime) >= MIN_CLICK_DELAY_TIME) {
                flag = true;
            }
            lastClickTime = curClickTime;
            return flag;
        }
    }

使用1方法ide

btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (Utils.isFastClick()) {
                    // 进行点击事件后的逻辑操做
                }
            }

单个按钮接口写法优化

    public abstract class OnMultiClickListener implements View.OnClickListener{
        // 两次点击按钮之间的点击间隔不能少于1000毫秒
        private static final int MIN_CLICK_DELAY_TIME = 1000;
        private static long lastClickTime;
     
        public abstract void onMultiClick(View v);
     
        @Override
        public void onClick(View v) {
            long curClickTime = System.currentTimeMillis();
            if((curClickTime - lastClickTime) >= MIN_CLICK_DELAY_TIME) {
                // 超过点击间隔后再将lastClickTime重置为当前点击时间
                lastClickTime = curClickTime;
                onMultiClick(v);
            }
        }
    }

方法2使用spa

    btn.setOnClickListener(new OnMultiClickListener() {
                @Override
                public void onMultiClick(View v) {
                    // 进行点击事件后的逻辑操做
                }
            });
相关文章
相关标签/搜索