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

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

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

相关推荐

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

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

Android 防止快速点击

【代码】Android 防止快速点击。

xiaoerbuyu1233的博客 647

麒麟银河操作系统V10部署ffmpeg(也能用于Linux系统)

部署ffmpeg用来处理视频的各种操作,如编码解码,格式转换,剪辑,处理实时视频流,音频流,加滤镜等

zhouwenxing666的博客 9041

Android深思如何防止快速点击

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

m0_59162559的博客 909

ISP工程师实战笔记:5种Demosaic算法优缺点对比(含Hamilton/DFPD代码片段)

本文从ISP工程师实战角度,深入对比了五种经典Demosaic算法的优缺点。文章详细剖析了双线性插值、Hamilton、DFPD、DLMMSE和GBTF等算法的核心思想、实现差异与性能表现,并提供了Hamilton和DFPD算法的关键代码片段。重点探讨了在图像信号处理流水线中,如何根据画质、计算复杂度和功耗等工程约束进行算法选型与权衡。

weixin_42527589的博客 248

HC-05蓝牙模块AT指令配置避坑全记录:从配对失败到稳定主从通信

本文详细记录了HC-05蓝牙模块AT指令配置的全过程,从基础认知到主从通信的稳定实现。涵盖了进入AT模式的方法、关键AT指令详解、主从配对流程及常见故障排除,帮助开发者快速掌握蓝牙串口模块的配置技巧,避免常见配对失败问题。

weixin_42632434的博客 416

Android防止按钮快速重复点击

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

JMW1407的博客 3658

CMOS传输门实战:如何用模拟开关优化你的电路设计(附常见问题排查)

本文深入探讨了CMOS传输门在电路设计中的实战应用与优化策略。文章从核心参数选型入手,详细分析了导通电阻、电荷注入等关键特性对电路性能的影响,并提供了多路复用器构建、精密电路应用等实战架构。同时,重点分享了PCB布局、电源去耦的工程细节,以及开关不导通、信号失真、高频性能不足等常见问题的系统性排查指南,旨在帮助硬件工程师充分发挥CMOS模拟开关的效能,提升电路设计的可靠性与精度。

js777的博客 451

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

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

恰好你来,恰好我在 4477

【Docker】完美解决拉取镜像超时报错:ERROR: Get https://registry-1.docker.io/v2/

因为我们下载的镜像是外网的镜像资源,所以下载的速度会非常的慢,甚至大概率下载时会报错,所以需要我们配置一个国内的服务器镜像地址,国内服务器镜像地址有很多,这里咱们就说一下阿里镜像加速器的配置方法。

liu_chen_yang的博客 12万+

Openclaw错误分析与解决方案之:Agent couldn’t generate a response.

Openclaw错误分析与解决方案之:Agent couldn't generate a response. Note: some tool actions may have already been executed — please verify before retrying.

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 1316

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

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

haoxuhong的博客 2245

基于Blender的AI插件——2D图片生成3D模型

只需5分钟即可从图片到可编辑3D模型,支持Blender全版本兼容。

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 2577

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

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

未来~超越自己 4341

SAM3 LoRA Fine-Tuning|SAM3微调(完全对齐官方训练和配置)

本文介绍了基于官方SAM3模型使用LoRA技术进行图像目标检测与分割微调的项目。项目完全对齐官方训练配置,支持多类别高效微调,且不影响原模型的开放词汇提示能力。微调后模型在航拍图像中对道路、车辆等目标的分割效果显著提升,误检率降低。 项目提供完整的训练和推理流程: 支持双卡并行训练,显存需求大(完整微调需30G+显存) 提供训练脚本和配置文件,可灵活调整参数 包含推理可视化工具,支持与原模型效果对比,内置训练结果分析工具,可生成指标对比图 数据集采用COCO格式。

weixin_46248968的博客 359

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Android 防止控件被重复点击

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

叶子一哥 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

sky_brian的专栏 2029

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

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

唯一郭大侠 546

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

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

仰望星空 615

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

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

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

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

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

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

android 防止多次点击

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

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 738
上一篇: 仿京东商品详情界面Tab指示器
下一篇: 和我一起实现EditText一键清空功能
Client_Block
博客等级 码龄11年 33粉丝 61原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值