zoukankan      html  css  js  c++  java
  • Android防止按钮快速重复点击

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

    一、全局

        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方法

    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使用

        btn.setOnClickListener(new OnMultiClickListener() {
                    @Override
                    public void onMultiClick(View v) {
                        // 进行点击事件后的逻辑操作
                    }
                });
  • 相关阅读:
    写代码如坐禅:你是哪一类程序员
    开发企业应用系统需要掌握的知识技能(转)
    (转)谈谈多线程的思维方式
    深入理解JavaScript定时机制
    (转)javascritp对fckeditor编辑器操作
    JavaScript异步编程的Promise模式
    (转)jquery调WCF
    (转)《代码大全》学习笔记:第10,11,12,13章 关于变量的使用,命名等
    编程:是一门艺术(转)
    禅修程序员十诫(转)
  • 原文地址:https://www.cnblogs.com/dingxiansen/p/10442255.html
Copyright © 2011-2022 走看看