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

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
原地址简书: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 防止对控件的重复点击和同时点击多个控件

AndroidAndroid防止过快点击造成次事件执行(防止按钮重复点击 用户使用 Android 应用的时候,经常会出现过快且点击同一按钮的情况,一方面这是因为应用或手机当前有些卡顿,另一方面也可能是由于很应用并没有设置按钮点击时的 selector 或者其它按钮响应方式(例如点击按钮时按钮放大,常见于游戏),导致用户误认为没有点击到当前按钮,当然,除了相对应的对应用进行优化设置点击selector以外,我们还可以做一些其它的工作,例如,判断按钮的 onCli 阅读详情

相关推荐

Android实现防快速点击、防抖动(附完整源码)

Android实现防快速点击、防抖动(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 608

Android 防止快速点击

【代码】Android 防止快速点击

xiaoerbuyu1233的博客 646

Android 防止过快(次)点击的实现方法

用户经常会出现过快且点击同一按钮的情况,本篇文章主要介绍了Android 防止过快点击的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Android深思如何防止快速点击

其实快速点击是个很好解决的问题,但是如何优雅的去解决确是一个难题,本文主要是记录一些本人通过解决快速点击的过程中脑海里浮现的一些对这个问题的深思。

m0_59162559的博客 906

Android防止按钮快速重复点击

JAndroid防止按钮快速重复点击问题发现参考 问题发现 做android开发时很可能会遇到这样的场景: 一个Button响应点击后发起网络请求。由于当前网络情况较差等原因请求结果没有及时返回,这个按钮又被用户重复点击,或者用户故意快速点击,造成请求次发起。 快速重复点击引起的网络请求次发起,往往都不是我们希望看到的,会产生交互上的逻辑混乱,如果是涉及到提交订单这样的请求,还可能会对用户造成损失,所以这样的情况需要避免。 防止快速重复点击的方案很。可以在服务端做校验,可以在客户端交互上做限制,也可以

JMW1407的博客 3647

Android 防止控件被重复点击次提交

Android 防止控件被重复点击次提交

恰好你来,恰好我在 4468

android中如何防止用户点击过快防止同时点击控件

  防止对单个控件的重复点击   方式一:     public final class AppUtils { private AppUtils() { } private static long mLastClickTime;// 用户判断点击的时间 public static boolean isFastDoubleClick() { ...

haoxuhong的博客 2243

Android快速点击的屏蔽弹出框的拦截

一、屏蔽同一个按钮的快速点击        同一个按钮,在一般情形下,不需要在极短的时间内连续点击次。当然,类似咻一咻的功能除外。屏蔽同一个按钮的快速点击,普通的情形有设置setClickable属性。在点击实现,首先将该对象置为不可点击。注意事项是,需要考虑不同情形下,将该按钮属性修改回来。        修改点击事件,是另一种方法。 public abstract class NoD

未来~超越自己 4338

Android 防止控件被重复点击

由于手机反应慢还是神马原因,用户对一个button 可快速点击。那么 可能出现问题: 比如 次提交数据... 在开发中经常会遇到这样的情况,一个按钮点击后会弹出Toast或者Dialog,如果快速重复地点击,则Toast则会重复地出现. 而我们想要的效果是一定时间内的点击只生效一次,或者说这种快速且重复的点击为无效点击. 解决的思路如下:  1. 需要定义一个全局变量 las

叶子一哥 1万+

android 防止用户粗暴点击快速点击)引起的无响应问题。

1、问题分析: 在做应用的时候经常会遇到一些奇葩用户,或者测试员,对着一个按钮或者某个控件进行粗暴的点击,这时很有可能出现的情况就是系统来不及响应到最后的ANR。 2、解决方案: 我的解决方案就是用户在很短的时间不断的点击某个控件时,不做响应。 3、代码如下: 在你需要防止粗暴点击的地方加上 if(isFastDoubleClick())             retu

sky_brian的专栏 2026

Android防止快速点击造成的错误

在测试的时候,我们经常可能会对一个控件进行次的触发,快速点击次同一个按钮,那么就会次触发这个按钮的监听。这其实不是我们想要的结果。 如何解决,下面给出解决方法。 弄一个防止快速点击的Utils: public class NoDoubleClick { private static long lastClickTime; public synchronized s

唯一郭大侠 544

Android防止重复点击,导致不必要的bug

Android控件监听事件是OnClickListener。为了防止我们快速点击某个控件连续触发次事件,重写了一个继承View.OnClickListener的点击事件NoDoubleClickListener。实现方式也很简单直接贴代码用法了。实现方式[java] view plain copy/**  * 防止点击  * Created by qi on 2016/7/20.  */ 

仰望星空 612

Android 防止按钮控件被重复点击

在开发中经常会遇到这样的情况,一个按钮点击后会弹出Toast或者Dialog,如果快速重复地点击,则Toast则会重复地出现. 而我们想要的效果是一定时间内的点击只生效一次,或者说这种快速且重复的点击为无效点击. 解决的思路如下:  1. 需要定义一个全局变量 lastClickTime, 用来记录最后点击的时间.  2. 每次点击前需要进行判断, 用lastClic

我是程序猿,我为自己代言 2274

Android 防止点击下层页面的控件

1、Bug:由于项目使用的是单Activity,由navigation进行跳转逻辑,所以,会使用到大量的fragment,由A跳转到B,在B页面进行键盘的收起展开后,点击页面的部分位置会点击到下层的控件,这样肯定是不行的,百度了也没啥结果,于是参考了大佬的其他页面的布局属性。于是便发现了android:clickable这个属性。该标签(继承自View的xml属性)的值必须是boolean值,即true、false。该标签目的是设置控件是否可以被点击。但是如果你在这儿设置为false,再去代码里面添加点击

Android 领域开发程序员,希望通过写博客的方式不断的总结提升自己,大家共同进步哦! 1325

android 防止点击

大家在开发过程中写控件点击事件是经常有的事,有时候用户操作过快会导致点击次,影响体验,我们该如何避免这种情况呢,很简单加个方法判断下就好了 ,主要是利用了时间差的原理。 方法如下: private static long lastClickTime; public static final int INTEGER_800 = 800; /** * 防止点击...

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 729
上一篇: 仿京东商品详情界面Tab指示器
下一篇: 和我一起实现EditText一键清空功能
Client_Block
博客等级 码龄11年 32粉丝 61原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值