为了对付拥有麒麟臂的测试人员或者用户对我们的按钮等控件展开惨无人道的快速啄击。厮以为可以用如下方法:

1 setEnabled 大法;在用户点击发生后调用setEnable(false);阻止持续受到伤害。而onClick中的处理逻辑执行完后再调用setEnable(true);进行迎击。此法代码多,且逻辑难处理,不推荐。

2 DoubleKill 大法;对于一些不想改动现有逻辑的童鞋可以选用该方法,样例如下:

定义:
public final class DoubleKill {
final static long CLICK_INTERVAL = 500L;// 允许的快速点击间隔
private final static HashMap<Integer, Long> mLastClickTime = new HashMap();
static long lastTime(int key) {
return mLastClickTime.containsKey(key) ? mLastClickTime.get(key) : 0L;
}
static void lastTime(int key, long lastTime) {
mLastClickTime.put(key, lastTime);
}
public static boolean isFastDoubleClick(View view) {
int key = view.hashCode();
long currTime = System.currentTimeMillis();
if (currTime - lastTime(key) < CLICK_INTERVAL) {
return true;
} else {
lastTime(key, currTime);
return false;
}
}
} 调用:
view.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
if(DoubleKill.isFastDoubleClick(view)){
return;
}
// 其他代码。。。。
}
});

3 继承大法;对于新开项目可以手动实现OnClickListener来进行阻击,废话不说,上代码:

定义:
public abstract class SingleClickListener<iCallView extends View> implements View.OnClickListener {
final static long CLICK_INTERVAL = 500L;
protected long mLastClickTime = 0L;
@Override
public final void onClick(View v) {
if (System.currentTimeMillis() - mLastClickTime < CLICK_INTERVAL) {
return;
}
mLastClickTime = System.currentTimeMillis();
click((iCallView) v);
}
public abstract void click(iCallView view);
} 调用:
view.setOnClickListener(new SingleClickListener<TextView>() {
@Override
public void click(TextView view) {
Toast.makeText(mCxt, "轻点!疼", Toast.LENGTH_SHORT).show();
}
});

此结!

Android 快速点击的处理的更多相关文章

  1. Android上按钮解决快速点击问题

           //代码2         public abstract class NoDoubleClickListener implements OnClickListener {        ...

  2. 解决Android中多次点击(快速点击多次 )启动多个相同界面的问题

    通过以下代码可以解决这个问题. /** * 防止快速点击 * @param ev * @return */ @Override public boolean dispatchTouchEvent(Mo ...

  3. [译]:Xamarin.Android开发入门——Hello,Android快速上手

    返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...

  4. Hello, Android 快速入门

    Hello, Android Android 开发与 Xamarin 简介 在这两节指南中,我们将 (使用 Xamarin Studio或 Visual Studio)建立我们的第一个 Xamarin ...

  5. Android 快速开发系列 打造万能的ListView GridView 适配器

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38902805 ,本文出自[张鸿洋的博客] 1.概述 相信做Android开发的写 ...

  6. (转载)实例详解Android快速开发工具类总结

    实例详解Android快速开发工具类总结 作者:LiJinlun 字体:[增加 减小] 类型:转载 时间:2016-01-24我要评论 这篇文章主要介绍了实例详解Android快速开发工具类总结的相关 ...

  7. 利用Kotlin扩展函数实现任意View的点击处理(点击效果和防止快速点击)

    利用Kotlin扩展函数实现View的点击处理(点击效果和防止快速点击) kotlin经典写法: view?.setOnClickListener { //实现 } 项目实践证明,这种写法存在问题 例 ...

  8. UIButton快速点击,只执行最后一次

    button快速点击时,会导致,同一动作执行多次,常用解决办法: 第一种方法:推荐 //取消执行 [[self class] cancelPreviousPerformRequestsWithTarg ...

  9. AndroidAnnotations(Code Diet)android快速开发框架

    最近用了一款很不错的android快速开发框架,1000行的代码瞬间变成几百行,不用你会后悔的 特点: (1) 依赖注入:包括view,extras,系统服务,资源等等(2) 简单的线程模型,通过an ...

随机推荐

  1. loadrunner 参数存储在data.ws、paralist、globals.h 中区别(参数与变量额区别于使用)

    1.如果变量数据只有一个值,可以直接放在data.ws 中    2.如果变量要根据循环取随机值.序列值等(参数存在一组值),放在paralist中     3.如果是申明全局变量,且要在代码中用到参 ...

  2. Ubuntu下deb包的解压、打包、安装、卸载及常用命令参数

    1.首先下载deb包,比如:将其放在 /home/tools/ 根目录下: 2.进入到tools根目录下的终端,输入下面命令创建文件夹extract,并在extract文件夹下创建DEBIAN文件夹 ...

  3. HDU 1908 Double Queue(set)

    Problem Description The new founded Balkan Investment Group Bank (BIG-Bank) opened a new office in B ...

  4. 不用分支语句实现1+2+。。。+n

    要求: 不使用乘除法.for.while .if.else.switch.case.以及A?B:C三元表达式 求1+2+3+...+n 此题思路有多种,能够用多态.构造函数.递归.和模板元. 我在看到 ...

  5. HDU 4960 Another OCD Patient(记忆化搜索)

    HDU 4960 Another OCD Patient pid=4960" target="_blank" style="">题目链接 记忆化 ...

  6. 经典面试题目——250M内存处理10G大小的log文件

    前言 周末逛知乎的时候,看到的一个经典面试题目:http://www.zhihu.com/question/26435483.非常经典的一道分而治之的题目. 题目描写叙述例如以下: 有次面试遇到一个问 ...

  7. webpack+babel+transform-runtime, IE下提示Promise未定义?

    知识要求 babel的基础知识(推荐阮一峰的babel入门教程) 充分理解babel-plugin-transform-runtime与babel-runtime的作用(推荐github项目首页) w ...

  8. webAPP踩坑记录

    最近公司突然给我们下了一个任务  一个星期要做出一个系统网站 外加手机app   2个同事负责 web开发  我负责手机app 的开发 今天终于初级版本做完了,记录一下手机app踩过的坑与优化之路 用 ...

  9. Linux小记 — Ubuntu自动化配置

    前言 工欲善其事,必先利其器.经过多次的重复配置ubuntu开发坏境,我终于决定花点时间总结一下,并将其写成一个自动化配置脚本.服务器实例:ubuntu 16.04,技术栈:shell,python. ...

  10. Lua代码提示和方法跳转

    前言 当在一个大型工程中编写大量的lua脚本时,代码提示和方法跳转等功能很实用,据我所了解的目前除LuaStudio之外,似乎还没有一个很好的编辑器.但今天讲述的是Idea +EmmyLua插件 达到 ...