关闭

Android中防止重复点击的小技巧

标签: androiddoubleclick技巧
4169人阅读 评论(3) 收藏 举报
分类:
转载请注明转自:[noyet12的博客](http://blog.csdn.net/u012975705) 
博客原址:http://blog.csdn.net/u012975705/article/details/50060887

PS: 好久没有写过博客了,不经意间看到这篇在我接触Android不久时写的文章,现在看来确实挺粗糙的(有点看不下去了。。),这里写写我刚想到的另一种思路吧:

private View.OnClickListener logListener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            long firstClickTime = -1;
            long curClickTime = System.currentTimeMillis();
            if (v.getTag() instanceof Long) {
                firstClickTime = (long) v.getTag();
            }
            if (-1 == firstClickTime || curClickTime - firstClickTime > TIME_GAP) {//TIME_GAP 你设置的时间差
                v.setTag(curClickTime);
                ToastUtil.showShort(mContext, "马上再次点击生效");
                return;
            }
            ......
        }
    };

.
.
- - - - - - -分割线- - - - - - -
.

在点击时设置时间标志,判断2次点击的时间差,自定义一个时间间隔SPACE_TIME,做判断:当2次点击的时间差大于SPACE_TIME时才能出发点击。Demo源码如下。

工具类:

package com.plusub.renthostapp.util;

/**
 * package: com.plusub.renthostapp.util
 * Created by noyet on 2015/11/26.
 */
public class NoDoubleClickUtils {
    private static long lastClickTime;
    private final static int SPACE_TIME = 500;

    public static void initLastClickTime() {
        lastClickTime = 0;
    }

    public synchronized static boolean isDoubleClick() {
        long currentTime = System.currentTimeMillis();
        boolean isClick2;
        if (currentTime - lastClickTime > SPACE_TIME) {
            isClick2 = false;
        } else {
            isClick2 = true;
        }
        lastClickTime = currentTime;
        return isClick2;
    }
}
使用方式:

/**
     * 订单日志
     */
    private View.OnClickListener logListener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (!NoDoubleClickUtils.isDoubleClick()) {
                EventBus.getDefault().post(new RefreshEvent(RefreshEvent.RefreshType.TYPE_LAND_ORDER_LOG, view.getTag()));
            }
        }
    };

自己先Mark下。(∩_∩)

1
6

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:149721次
    • 积分:2162
    • 等级:
    • 排名:第18695名
    • 原创:44篇
    • 转载:29篇
    • 译文:0篇
    • 评论:52条
    博客专栏
    友情链接
    最新评论