Android-防止用户快速点击和多点触控

1.为什么要防止用户重复点击


在用户使用App的时候,并不会乖乖的按照我们的想法而执行。

下面就拿我们熟悉的Button来:


Android-防止用户快速点击和多点触控_第1张图片
举个栗子

假设这个Button的点击事件是“一个登录的网络请求”,这时候我们的主角-老司机小明登场了,他娴熟的输入了自己的账号和密码,然后点击了登录,静静地等候着APP的反馈跳转,可是天有不测风云,这时候网络不是很好,APP一直还未反馈 。我们的老司机也是一个暴脾气,抓着APP的那个小Button一顿乱点。欺负完Button以后,网络好了,然后无数个网络请求被发出去了,瞬间爆炸(当然你也可以优化网络请求,这里只是举个类似的例子)。


2.如何防止重复点击


方法1.屏蔽Button的点击事件

步骤一:在Button的点击事件里面

btn.setClickable(false);//设置button不可以点击

步骤二:在网络请求完成的时候(请求获得数据或者请求失败,请求取消等操作)

btn.setClickable(true);//设置button可以点击


方法2.添加标志位判断是否执行Button内的标志位

原理:每次点击button的时候,获取当前的时间,然后对比上一次的时间,两者的差值如果小于某个规定的时间,则判断为快速点击。

/**
 * 判断用户是否快速点击多次
 */
private static long lastClickTime = 0;
private static final long SPACE_TIME = 1000;//时间间隔

public static boolean isFastClick() {

    //当前系统时间
    long currentTime = System.currentTimeMillis();

    boolean isAllowClick;//是否允许点击

    if (currentTime - lastClickTime > SPACE_TIME) {
        isAllowClick = false;
    } else {
        isAllowClick = true;
    }

    lastClickTime = currentTime;

    return isAllowClick;

}

你可能感兴趣的:(Android)