灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2973回复:0

Android 防止控件被重复点击

楼主#
更多 发布于:2012-11-10 14:22

在开发中经常会遇到这样的情况,一个按钮点击后会弹出Toast或者Dialog,如果快速重复地点击,则Toast则会重复地出现. 而我们想要的效果是一定时间内的点击只生效一次,或者说这种快速且重复的点击为无效点击.

 


解决的思路如下:

 1. 需要定义一个全局变量 lastClickTime, 用来记录最后点击的时间.

 2. 每次点击前需要进行判断, 用lastClickTime 和当前时间想比较,并且更新最后点击时间,若小于临界值,则算无效点击,不触发事件

 


下面请看代码:

工具类:


[java]
public class CommonUtils {
    private static long lastClickTime;
    public static boolean isFastDoubleClick() {
        long time = System.currentTimeMillis();
        long timeD = time - lastClickTime;
        if ( 0 < timeD ;; timeD < 800) {    
            return true;    
        }    
        lastClickTime = time;    
        return false;    
    }
}

public class CommonUtils {
    private static long lastClickTime;
    public static boolean isFastDoubleClick() {
        long time = System.currentTimeMillis();
        long timeD = time - lastClickTime;
        if ( 0 < timeD ;; timeD < 800) {  
            return true;  
        }  
        lastClickTime = time;  
        return false;  
    }
}

控件点击的处理:


[java]
public void onClick(View v) {  
    if (Utils.isFastDoubleClick()) {  
        return;  
    }else{
        //弹出Toast或者Dialog  
   }
 }  

public void onClick(View v) {
    if (Utils.isFastDoubleClick()) {
        return;
    }else{
        //弹出Toast或者Dialog
   }
 }
这样,两次点击时间相隔小于800ms,便不会触发事件,具体的临界时间可以根据需求自己修改.

 

喜欢0 评分0
游客

返回顶部