android快速点击分析
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快速点击分析相关推荐
- android 快速点击开启某功能(不如快速点击打开开发者模式)
今天加班找手机开发者模式,点击几次出现了,趁现在忙完了,自己随手也写一个这个 快速点击的功能 开代码把很简单的 package com.hly.mydemo;import android.os.Bun ...
- Android 快速连续点击APP,会导致APP返回桌面
最近开发时,发现我的APP在vivo的机子和荣耀的机子上有个问题,就是快速连续点击APP,会导致APP突然消失,然后显示桌面,这个时候以为是APP发生crash了,但是再次点击APP图标后,刚才的页面 ...
- android快速点击两次,如何通过在Android中快速单击两次按钮来防...
如果我在我的Android应用中快速单击按钮,似乎它后面的代码运行了两次. 如果我两次单击菜单按钮,则必须启动onclick的活动只会启动两次,而我必须退出两次. 这真的很烦人,因为如果我单击菜单按钮 ...
- 如何快速阅读并分析Android源码
很多时候为了解决一个问题必须先理解Android系统的运行原理,这时候就得阅读应用层框架的源码.学会阅读系统源码或者他人的代码,这是研发必备的技能之一,只有了解别人写的东西才能在他之上更好的行事,同时 ...
- Android 防止快速点击
需求 希望页面里的元素,可以防止用户快速点击.但是单用户点击一个元素后,仍然可以快速点击页面上另一个元素.也就是两个元素的快速点击不互相影响 当时想到的是,从代码事件分发上拦截,但是后来想到实现不了这 ...
- Android 实现防抖动(防快速点击)的最优雅做法
前言: 对于很多安卓开发者来说,防快速点击的实现,并不是一件难事.难的是,如何优雅的实现.现在,主流的做法,有自己在onClick方法的顶部加时间判断.也有通过,第三方注解框架去解决.但是,如果你既不 ...
- 小米3连续快速点击android版本四次后出现屏幕是红的咋耨,小米3怎么打开usb调试...
小米3怎么打开usb调试 安卓手机要连接电脑,就必须开启USB调试模式,而通常手机默认是关闭USB调试模式的,这导致了不少用户无法成功将手机连接电脑,另外一些搭载安卓4.1以上系统的手机,开启USB调 ...
- 小米3连续快速点击android版本四次后出现屏幕是红的咋耨,小米3手机连不上电脑怎么办?...
谈到小米手机,我想说一个字"黑":谈到抢小米手机,我想说一个字"坑":在两次抢购小米2s无果之后,终于在前几天在小米达人无飘嘟嘟大神的帮助下,买到了传说中的&q ...
- Android 系统(53)---关于触摸屏快速点击事件误识别为滑动事件
关于触摸屏快速点击事件误识别为滑动事件 问题 触屏太灵敏,有时候点击一下会误认为滑动事件,造成误识别. 解决方法 增大触发触屏滑动所需要的距离条件,将Config.xml(frameworks\b ...
最新文章
- iOS开发使用Unwind Segue进行返回
- 更新了朋友圈微博动态,好友何时会点赞评论?
- Leetcode 88. 合并两个有序数组 解题思路及C++实现
- 容易的linux自动化运维工具之clinet端(二)
- 网页视频播放php拉伸代码,网页在线视频播放代码大全
- 【机器视觉】 dev_map_prog算子
- vfs管理下的linux文件系统
- multiprocessing.manager管理的对象需要加锁吗_iOS内存管理布局-理论篇
- 75-100-020-测试-MySQL 单表优化案例
- arraylist插入数据_集合系列 List(二):ArrayList
- docker machine介绍和使用
- Protel99se基本教程 Protel 99SE从零开始学习教程视频教程
- WebService之CXF框架
- 二调,分幅图打印(标准分幅土地利用现状图,耕地坡度分级图),图框工具
- Liferay layout_configuration 分析
- 模电学习笔记(上交郑老师)2.二极管
- CURL -w 参数详解
- The Fool 傻子
- C语言-复制特定的字符串
- 1.2.1.1Android基础-案例1:我的第一个App(HiAndroid)
热门文章
- 使用开源ASR框架在Mono和.NET C#中进行语音识别
- 使用Keras和CNN进行自定义AI人脸识别
- 在CentOS上的Docker私有注册表
- java 工厂模式_软件设计工厂模式使用场景介绍及java举例(附源码)
- mysql已死 subsys被锁_centos6.5安装MYSQL“mysqld已死,但是subsys被锁”的解决方案
- springboot+vue+element+mybatisplus项目(前端)
- html5怎么改为vue_Vue.js 项目打包优化实践
- java sybase存储过程_sybase存储过程-----不定时更新
- 第三方软件源_最强软件管家!要啥有啥,吊打全网~
- 使用echarts(三)自定义图表仪表盘