android快速点击分析

要点思路:

1 一般我们会这样考虑,当两次按按钮的时间小于1s为快速点击,那么需要记住两次点击的时间间隔

2 为了方便记住点击按钮的时间,我们需要记住每次按钮点击的时间 。
核心

  正确写法long currentTime = System.currentTimeMillis();lastClickTime2 = currentTime;错误写法lastClickTime2 =System.currentTimeMillis();

错误写法的原因是: 最后点击的时间不是按钮刚开始按下去的时间,而是代码执行完之后的时间,保存的时间不准确。

代码分析
测试快速点击button分析了快速点击的形成过程,当两次点击时间间隔小于1会出现快速点击

不允许快速点击button:通过对if条件不允许出现快速点击

不允许快速点击测试button : 对快速点击做了一个封装

package com.example.zz.myapplication;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;import java.text.DecimalFormat;public class MainActivity extends AppCompatActivity {private TextView tvResult;private TextView tvResult2;private TextView tvResult3;private TextView tvClickNum;private Button btnFastClick;private Button fastClickUtils;private long lastClickTime;private int clickNums;private long lastClickTime2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btnFastClick = findViewById(R.id.btnFastClick);fastClickUtils = findViewById(R.id.fastClickUtils);tvResult = findViewById(R.id.tvResult);tvResult2 = findViewById(R.id.tvResult2);tvResult3 = findViewById(R.id.tvResult3);tvClickNum = findViewById(R.id.tvClickNum);btnFastClick.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {long currentTime = System.currentTimeMillis();if(System.currentTimeMillis() - lastClickTime<1000){clickNums ++;float time =(float) (System.currentTimeMillis() - lastClickTime)/1000;DecimalFormat df = new DecimalFormat("0.00");//格式化小数String s = df.format(time);tvResult.setText("快速点击了,时间间隔:"+s);tvClickNum.setText("快速点击次数:"+clickNums);}else {tvResult.setText("非快速点击");tvClickNum.setText("");clickNums =0;}lastClickTime = currentTime;}});fastClickUtils.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(FastClickUtils.isAllowClick()){tvResult3.setText("允许被点击");}else {tvResult3.setText("快速点击,不被允许被点击");}}});}public void btnNoFastClickTest(View view){long currentTime = System.currentTimeMillis();if(System.currentTimeMillis()-lastClickTime2>1000){//正常速度点击tvResult2.setText("正常速度点击");}else {//快速点击tvResult2.setText("快速点击");}lastClickTime2 = currentTime;}}

对快速点击封装

package com.example.zz.myapplication;import android.view.View;public class FastClickUtils {private static  long lastClickTime2;private  static int spaceTime = 1000;//时间间隔public static Boolean isFastClick(){long currentTime = System.currentTimeMillis();boolean isFastClick;//是否允许点击if(currentTime-lastClickTime2>spaceTime){isFastClick= false;//正常速度点击}else {isFastClick= true;//快速点击}lastClickTime2 = currentTime;return isFastClick;}public static Boolean isAllowClick(){long currentTime = System.currentTimeMillis();boolean allowClick;//是否允许点击if(currentTime-lastClickTime2>spaceTime){allowClick= true;//正常速度点击}else {allowClick= false;//快速点击}lastClickTime2 = currentTime;return allowClick;}}

demo下载
https://download.csdn.net/download/qq_26296197/10838697

android快速点击分析相关推荐

  1. android 快速点击开启某功能(不如快速点击打开开发者模式)

    今天加班找手机开发者模式,点击几次出现了,趁现在忙完了,自己随手也写一个这个 快速点击的功能 开代码把很简单的 package com.hly.mydemo;import android.os.Bun ...

  2. Android 快速连续点击APP,会导致APP返回桌面

    最近开发时,发现我的APP在vivo的机子和荣耀的机子上有个问题,就是快速连续点击APP,会导致APP突然消失,然后显示桌面,这个时候以为是APP发生crash了,但是再次点击APP图标后,刚才的页面 ...

  3. android快速点击两次,如何通过在Android中快速单击两次按钮来防...

    如果我在我的Android应用中快速单击按钮,似乎它后面的代码运行了两次. 如果我两次单击菜单按钮,则必须启动onclick的活动只会启动两次,而我必须退出两次. 这真的很烦人,因为如果我单击菜单按钮 ...

  4. 如何快速阅读并分析Android源码

    很多时候为了解决一个问题必须先理解Android系统的运行原理,这时候就得阅读应用层框架的源码.学会阅读系统源码或者他人的代码,这是研发必备的技能之一,只有了解别人写的东西才能在他之上更好的行事,同时 ...

  5. Android 防止快速点击

    需求 希望页面里的元素,可以防止用户快速点击.但是单用户点击一个元素后,仍然可以快速点击页面上另一个元素.也就是两个元素的快速点击不互相影响 当时想到的是,从代码事件分发上拦截,但是后来想到实现不了这 ...

  6. Android 实现防抖动(防快速点击)的最优雅做法

    前言: 对于很多安卓开发者来说,防快速点击的实现,并不是一件难事.难的是,如何优雅的实现.现在,主流的做法,有自己在onClick方法的顶部加时间判断.也有通过,第三方注解框架去解决.但是,如果你既不 ...

  7. 小米3连续快速点击android版本四次后出现屏幕是红的咋耨,小米3怎么打开usb调试...

    小米3怎么打开usb调试 安卓手机要连接电脑,就必须开启USB调试模式,而通常手机默认是关闭USB调试模式的,这导致了不少用户无法成功将手机连接电脑,另外一些搭载安卓4.1以上系统的手机,开启USB调 ...

  8. 小米3连续快速点击android版本四次后出现屏幕是红的咋耨,小米3手机连不上电脑怎么办?...

    谈到小米手机,我想说一个字"黑":谈到抢小米手机,我想说一个字"坑":在两次抢购小米2s无果之后,终于在前几天在小米达人无飘嘟嘟大神的帮助下,买到了传说中的&q ...

  9. Android 系统(53)---关于触摸屏快速点击事件误识别为滑动事件

    关于触摸屏快速点击事件误识别为滑动事件 问题 触屏太灵敏,有时候点击一下会误认为滑动事件,造成误识别.   解决方法 增大触发触屏滑动所需要的距离条件,将Config.xml(frameworks\b ...

最新文章

  1. iOS开发使用Unwind Segue进行返回
  2. 更新了朋友圈微博动态,好友何时会点赞评论?
  3. Leetcode 88. 合并两个有序数组 解题思路及C++实现
  4. 容易的linux自动化运维工具之clinet端(二)
  5. 网页视频播放php拉伸代码,网页在线视频播放代码大全
  6. 【机器视觉】 dev_map_prog算子
  7. vfs管理下的linux文件系统
  8. multiprocessing.manager管理的对象需要加锁吗_iOS内存管理布局-理论篇
  9. 75-100-020-测试-MySQL 单表优化案例
  10. arraylist插入数据_集合系列 List(二):ArrayList
  11. docker machine介绍和使用
  12. Protel99se基本教程 Protel 99SE从零开始学习教程视频教程
  13. WebService之CXF框架
  14. 二调,分幅图打印(标准分幅土地利用现状图,耕地坡度分级图),图框工具
  15. Liferay layout_configuration 分析
  16. 模电学习笔记(上交郑老师)2.二极管
  17. CURL -w 参数详解
  18. The Fool 傻子
  19. C语言-复制特定的字符串
  20. 1.2.1.1Android基础-案例1:我的第一个App(HiAndroid)

热门文章

  1. 使用开源ASR框架在Mono和.NET C#中进行语音识别
  2. 使用Keras和CNN进行自定义AI人脸识别
  3. 在CentOS上的Docker私有注册表
  4. java 工厂模式_软件设计工厂模式使用场景介绍及java举例(附源码)
  5. mysql已死 subsys被锁_centos6.5安装MYSQL“mysqld已死,但是subsys被锁”的解决方案
  6. springboot+vue+element+mybatisplus项目(前端)
  7. html5怎么改为vue_Vue.js 项目打包优化实践
  8. java sybase存储过程_sybase存储过程-----不定时更新
  9. 第三方软件源_最强软件管家!要啥有啥,吊打全网~
  10. 使用echarts(三)自定义图表仪表盘