Android之有效防止按钮多次重复点击的方法(必看篇)

为了防止测试妹子或者用户频繁点击某个按钮,导致程序在短时间内进行多次数据提交or数据处理,那到时候就比较坑了~

那么如何有效避免这种情况的发生呢?

我的想法是,判断用户点击按钮间隔时间,如果间隔时间太短,则认为是无效操作,否则进行相关业务处理

首先将这块提取为工具类(方便接下来的调用),现在就起名为:ButtonUtils

public class ButtonUtils {
  private static long lastClickTime = 0;
  private static long DIFF = 1000;
  private static int lastButtonId = -1;

  /**
   * 判断两次点击的间隔,如果小于1000,则认为是多次无效点击
   *
   * @return
   */
  public static boolean isFastDoubleClick() {
    return isFastDoubleClick(-1, DIFF);
  }

  /**
   * 判断两次点击的间隔,如果小于1000,则认为是多次无效点击
   *
   * @return
   */
  public static boolean isFastDoubleClick(int buttonId) {
    return isFastDoubleClick(buttonId, DIFF);
  }

  /**
   * 判断两次点击的间隔,如果小于diff,则认为是多次无效点击
   *
   * @param diff
   * @return
   */
  public static boolean isFastDoubleClick(int buttonId, long diff) {
    long time = System.currentTimeMillis();
    long timeD = time - lastClickTime;
    if (lastButtonId == buttonId && lastClickTime > 0 && timeD < diff) {
      Log.v("isFastDoubleClick", "短时间内按钮多次触发");
      return true;
    }
    lastClickTime = time;
    lastButtonId = buttonId;
    return false;
  }  

}

我们通过判断俩次点击时间间隔去判定当前点击操作是否为有效操作。那么如何在使用中调用呢?继续往下看。。。

gv_isf.setOnItemClickListener(new OnItemClickListener() {

      @Override
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
          long arg3) {
        if (!ButtonUtils.isFastDoubleClick(R.id.gv_integralstore)) {
          //写你相关操作即可
        }

      }
    });

!ButtonUtils.isFastDoubleClick(R.id.gv_integralstore):这块是关键。我的想法就是在单击事件中进行判断,看看当前的点击事件是否为有效点击事件

好了,一个简单又实用的防止按钮多次重复点击的工具类就搞定了。。。

以上这篇Android之有效防止按钮多次重复点击的方法(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Android如何防止多次点击事件

    问题描述 恐怕大家都会遇到这样的问题,一个点击事件多次触发,导致,同样的内容提交了多次,或者说弹出多个页面... onClick事件是Android开发中最常见的事件.比如,一个submitButton,功能是点击之后会提交一个订单,则一般代码如下,其中submitOrder()函数会跳转到下一页进行处理 : <code class="hljs" java=""> //代码0 submitButton.setOnClickListener(new OnC

  • Android防止按钮过快点击造成多次事件的解决方法

    问题 onClick事件是Android开发中最常见的事件.比如,一个submitButton,功能是点击之后会提交一个订单, 则一般代码如下,其中submitOrder()函数会跳转到下一页进行处理 : //代码0 submitButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { submitOrder(); } }); 正常情况下这段代码是没什么问题的,但是Andro

  • 实例详解Android解决按钮重复点击问题

    为了防止用户或者测试MM疯狂的点击某个button,写个方法防止按钮连续点击.具体实例代码如下所示: public class BaseActivity extends Activity { protected boolean isDestroy; //防止重复点击设置的标志,涉及到点击打开其他Activity时,将该标志设置为false,在onResume事件中设置为true private boolean clickable=true; @Override protected void on

  • Android之有效防止按钮多次重复点击的方法(必看篇)

    为了防止测试妹子或者用户频繁点击某个按钮,导致程序在短时间内进行多次数据提交or数据处理,那到时候就比较坑了~ 那么如何有效避免这种情况的发生呢? 我的想法是,判断用户点击按钮间隔时间,如果间隔时间太短,则认为是无效操作,否则进行相关业务处理 首先将这块提取为工具类(方便接下来的调用),现在就起名为:ButtonUtils public class ButtonUtils { private static long lastClickTime = 0; private static long D

  • Android 处理空列表的方法(必看篇)

    android中ListView 用来展示数据,如果列表为空的状态,可以通过setEmpty(View)方法设置为空时显示的内容. 布局xml <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android

  • Android 快速实现防止网络重复请求&按钮重复点击的方法

    在日常开发过程中,偶尔会出现一些极端问题.比如 网络重复请求,很难过滤 请求的问题. 下面一段代码,可以解决这个重复请求的问题. 下面上一段代码: private long lastClick; // 防止网络重新请求 if (System.currentTimeMillis() - lastClick <= 1000) { return; } lastClick = System.currentTimeMillis(); 以上这篇Android 快速实现防止网络重复请求&按钮重复点击的方法

  • Android开发中button按钮的使用及动态添加组件方法示例

    本文实例讲述了Android开发中button按钮的使用及动态添加组件方法.分享给大家供大家参考,具体如下: MainActivity.java package com.example.lab2; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.view.Menu; import android.view.View; import andro

  • Android 线程thread的两种实现方法(必看)

    这篇文章中有三点需要提前说明一下, 一:在android中有两种实现线程thread的方法: 一种是,扩展java.lang.Thread类 另一种是,实现Runnable接口 二:Thread类代表线程类,它的两个最主要的方法是: run()--包含线程运行时所执行的代码 Start()--用于启动线程 三: Handler 机制,它是Runnable和Activity交互的桥梁,在run方法中发送Message,在Handler里,通过不同的Message执行不同的任务. 下面分别给出两种线

  • Android 文件夹显示红色叹号的解决方法(必看)

    有感叹号,说明有的文件损坏或丢失了 解决方法: 右击工程,Build Path..->Configure Build Path...->Java Build Path 可以看到引用的jar包,看看是不是带x了 不用的话就移除,要用的引用回正确路径就可以了 以上这篇Android 文件夹显示红色叹号的解决方法(必看)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Android EventBus 3.0.0 使用总结(必看篇)

    前言 EventBus框架 EventBus是一个通用的叫法,例如Google出品的Guava,Guava是一个庞大的库,EventBus只是它附带的一个小功能,因此实际项目中使用并不多.用的最多的是greenrobot/EventBus,这个库的优点是接口简洁,集成方便,但是限定了方法名,不支持注解.另一个库square/otto修改自 Guava ,用的人也不少.所以今天我们研究的目标是greenrobot的EventBus. EventBus 简介 1.EventBus3.0.0 是最新的

  • Android 通过ViewHolder优化适配器的实现方法(必看)

    Adapter类的定义: Adapter对象是AdapterView和底层数据见的桥梁.Adapter用于访问数据项,并且负责为数据项生成视图 AdapterView是一个抽象类,用于那些需要通过Adapter填充自身的视图,其常见子类是ListView.显示AdapterView时会调用Adapter的getView()方法创建并添加每个子条目的视图.Adapter的getView()方法就是用来创建这些视图的,Adapter并不会为每行数据都创建一个新视图,而是提供了回收旧视图的方法.运行机

  • Android设置Activity背景为透明style的简单方法(必看)

    方法一: 通过Theme.Translucent @android:style/Theme.Translucent @android:style/Theme.Translucent.NoTitleBar @android:style/Theme.Translucent.NoTitleBar.Fullscreen 只需要在Manifest中需要透明的Activity内设置theme为以上任意一个就可以了 <activity android:name="com.vixtel.simulate.

  • Android中捕获TTextView文本中的链接点击事件方法

    Android中的TTextView很强大,我们可以不仅可以设置纯文本为其内容,还可以设置包含网址和电子邮件地址的内容,并且使得这些点击可以点击.但是我们可以捕获并控制这些链接的点击事件么,当然是可以的. 本文将一个超级简单的例子介绍一下如何实现在Android TextView 捕获链接的点击事件. 关键实现 实现原理就是将所有的URL设置成ClickSpan,然后在它的onClick事件中加入你想要的控制逻辑就可以了. 复制代码 代码如下: private void setLinkClick

随机推荐