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

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. drupal 开发简单站点流程

    友情推广:Uminicmf 一个基于thinkphp开发的OA框架.http://blog.csdn.net/youmypig/article/details/51727713 drupal 简单站点 ...

  2. hdoj 1251 统计难题 【字典树】

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others) Total Subm ...

  3. 基于lucene.net 和ICTCLAS2014的站内搜索的实现1

    Lucene.net是一个搜索引擎的框架,它自身并不能实现搜索.须要我们自己在当中实现索引的建立,索引的查找.全部这些都是依据它自身提供的API来实现.Lucene.net本身是基于java的,可是经 ...

  4. 王磊:AI 时代物流行业的 OCR 应用

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ OCR 是人工智能里面非常重要的基础能力之一.腾讯云人工智能产品总监王磊,结合物流场景解读了OCR技术."OCR文本识别能够优化 ...

  5. 前端优化之动画为什么要尽量用css3代替js

    导致JavaScript效率低的两大原因:操作DOM和使用页面动画.通常我们会通过频繁的操作 DOM的CSS来实现视觉上的动画效果,导致js效率低的两个因素都包括在内了在频繁的操作DOM和CSS时,浏 ...

  6. 快速序列化组件MessagePack介绍

    简介 MessagePack for C#(MessagePack-CSharp)是用于C#的极速MessagePack序列化程序,比MsgPack-Cli快10倍,与其他所有C#序列化程序相比,具有 ...

  7. 九、 Spring Boot 拦截器

    过滤器属于Servlet范畴的API,与spring 没什么关系. Web开发中,我们除了使用 Filter 来过滤请web求外,还可以使用Spring提供的HandlerInterceptor(拦截 ...

  8. All-In-One方式-安装openstack

    ALL-IN-ONE安装openstack******************************************************************************* ...

  9. ssm学习(四)--完整的增删改查demo

    上一篇文章简要介绍了将sping mvc加入整个框架,算是完成了ssm的集成.本节继续前面的内容,结合spring mvc做一个简单的增删改查demo. 1.首先,重写一下GeckoList.jsp页 ...

  10. Maven版本号中隐藏的惊天大秘密

    一.背景 现在主流的Java系的互联网公司里,绝大多数公司都使用Maven作为依赖管理工具,一般我们对于依赖的版本号,常见两种类型:一种以“-RELEASE”结尾,另一种以“-SNAPSHOT”结尾. ...