Android进阶-双击&多击事件

原创 2015年11月19日 20:25:33

Android进阶-双击&多击事件

双击事件,我们可以很容易的想到怎么做: 可以根据两个单击事件之间的时间间隔来确定多击事件。
例如下面代码:

public class MainActivity extends Activity {

        private long firstClickTime;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }

        public void onClick(View view) {
            if (firstClickTime > 0) {// 发现之前点击过一次
                if (System.currentTimeMillis() - firstClickTime < 500) {// 判断两次点击是否小于500毫秒
                    Toast.makeText(this, "双击啦!", Toast.LENGTH_SHORT).show();
                    firstClickTime = 0;//重置时间, 重新开始
                    return;
                }
            }

            firstClickTime = System.currentTimeMillis();
        }
    }

但是多击事件呢? 可能有很多的做法, 下面来看一下Google大牛,写的多击事件的代码。(击多少下由你定义)

    public class DragViewActivity extends Activity {

        private ImageView ivDrag;
        /*......*/

        long[] mHits = new long[10];// 数组长度表示要点击的次数
        ivDrag.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);   
                mHits[mHits.length - 1] = SystemClock.uptimeMillis();//  SystemClock.uptimeMillis(): 开机后开始计算的时间
                if (mHits[0] >= (SystemClock.uptimeMillis() - 500)) {  //500ms完成10次单击
                        /* do something*/
                }
            }
        });
    }

分析一下这段代码:

核心思想就是:把每次单击的时间记录在数组中。数组的最后一个元素与第一个元素之差,分别是第一次单击和最后一次单击的时间戳。
理所当然,最后一个时间戳减去第一个时间戳,只要满足我们规定的时间限制,就算完成这个多击事件。-> 500 >= (SystemClock.uptimeMillis() - mHits[0]
核心: 上面的mHits数组就像一个队列容器, 时间戳就这样流过这个队列

从上面的代码可以看出:
1. Google大神真nb有没有?(真是另一个层面的程序员了!!)
2. 想编出nb的代码数学得学好有没有!!!!!!(你的逻辑思维强吗?)
3. 佩服的不行不行的

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android进阶——双击,三击和多击的实现

双击: 先来看简单的实现方式 private void initView() { // 找到按钮控件 btn = (Button) findViewById(R....
  • haovip123
  • haovip123
  • 2016年01月14日 17:25
  • 1124

android 多击事件的实现方法

注:System.arraycopy方法拷贝数组到另一个数组中,自己也可以拷贝到自己 System.arraycopy(mHits, 1, mHits, 0, length-1)//代码解释如下 ...
  • wg243964183
  • wg243964183
  • 2016年09月29日 23:27
  • 292

Android中双击,三击事件的响应代码

Android 双击事件 三击事件 代码
  • sandisks
  • sandisks
  • 2015年03月03日 23:14
  • 820

android实现双击事件暨多击事件详解

双击事件暨多击事件详解
  • wei18359100306
  • wei18359100306
  • 2014年11月01日 22:45
  • 3185

108.双击多击事件

根据点击的时间间隔来判断是否是多次点击事件,谷歌的做法是,创建了一个数组来存储每一次点击的时间,以三次点击为例,每点击一次保存一次时间,数组更新一次(数组左移),最后通过比较最后一次点击事件的时间和第...
  • augfun
  • augfun
  • 2017年04月10日 01:20
  • 354

Android中实现双击(多击)事件

实现双击事件的三种方法,以及如何扩展到三击事件、四击事件……的方法!...
  • xiabob
  • xiabob
  • 2015年01月24日 10:44
  • 723

Android双击或多击事件

原理:双击,及时两次点击时间差比较小的单击事件,所以可以对单击事件进行加工处理,实现双击事件,或多击事件。 首先是双击事件: 1. 首先定义一个记录第一次点击事件的时间的变量private lon...
  • baijunzhijiang_01
  • baijunzhijiang_01
  • 2015年08月11日 18:59
  • 260

Android双击以及多击事件

public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstan...
  • xuxiaocheng1
  • xuxiaocheng1
  • 2014年07月22日 19:50
  • 427

安卓按钮响应三击事件

1、     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"  ...
  • huwan12345
  • huwan12345
  • 2017年03月18日 07:45
  • 243

【按键】[独立按键] - 1: 单击,双击,三击以及N击

下面这段是引言,和按键程序实质内容没有任何关系,可以当P话,可直接跳到分割线之后的正文部分。最近自己在琢磨按键程序,之前弄了,按键单击程序,程序可以实现读取按键的几个状态,然后根据需求使用。单击按键的...
  • z21109
  • z21109
  • 2016年03月23日 18:03
  • 3900
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android进阶-双击&多击事件
举报原因:
原因补充:

(最多只允许输入30个字)