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

原地址简书:http://www.jianshu.com/p/9d7df1895b72
1.为什么要防止用户重复点击


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

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



举个栗子

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


2.如何防止重复点击


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

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

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

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

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


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

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

public class NoFastClickUtils {

               private  static long lastClickTime=0;//上次点击的时间

               private  static int spaceTime = 1000;//时间间隔

               public  static boolean isFastClick() {

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

                           boolean isAllowClick;//是否允许点击

                          if (currentTime - lastClickTime > spaceTime) {

                                      isAllowClick= false;

                           } else {

                                      isAllowClick = true;

                             }

                          lastClickTime = currentTime;

                          return isAllowClick;

    }

}


使用方法:

在Button的点击事件里面加入如下代码:

if(NoFastClickUtils.isDoubleClick()) {

//快速点击后的逻辑,可以提示用户点击太快,休息一会

}else{

//正常点击的逻辑

}


3.为什么需要防止多点触控


在默认情况下,Android是支持多点触控的。



累了换个姿势再举个粒子


有一个界面A,A中含有2个Button。

我们这里称界面A为A女神,Button1为备胎小明,Button2为备胎小东。

A女神嘛肯定有很多备胎的联系方式,周末了A女神想找个备胎吃饭,信息已经编好了(内容自行脑补),她在思考是找小明还是小东呢?这是个值得深思的问题。想着想着,手一不小心同时点击了小明和小东。这一下蒙蔽了,A女神的尴尬癌都犯了。这时候“防止多点触控”同学为了帮助A女神解决问题,成为她广大备胎队伍中的一员勇敢的站了出来。


4.如何防止多点触控


其实很简单在2个Button的父布局中加入:

android:splitMotionEvents=”false”//不支持多点触控事件

就是这么简单,你就可以接近A女神。

还找到另一种方式:

<style name="MyStyle">

      <item name="android:windowEnableSplitTouch">false</item>

      <item name="android:splitMotionEvents>false</item>

</style>

这种方式就相当于全局设置了,可是有时候我们还是需要多点触控的,比如查看一张图片,我们需要放大看。


参考地址:

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

android 防止对控件的重复点击和同时点击多个控件

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值