zoukankan      html  css  js  c++  java
  • Android连续点击多次事件的实现

    有时候我们需要实现这样的场景,类似进入开发者模式,即多次点击后执行操作。

    首先我们先看一个方法:

    System提供的一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。

    public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length);

    src:源数组; 
    srcPos:源数组要复制的起始位置; 
    dest:目的数组; 
    destPos:目的数组放置的起始位置; 
    length:复制的长度。 
    注意:src and dest都必须是同类型或者可以进行转换类型的数组.

    final static int COUNTS = 4;// 点击次数
    final static long DURATION = 1000;// 规定有效时间
    long[] mHits = new long[COUNTS];

    首先我们定义次数,规定的有效时间,还有对应的数组,即我们要在一秒钟内点击4次才有效


    @Override
    public void onClick(View v) { continuousClick(COUNTS, DURATION); } private void continuousClick(int count, long time) { //每次点击时,数组向前移动一位 System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1); //为数组最后一位赋值 mHits[mHits.length - 1] = SystemClock.uptimeMillis(); if (mHits[0] >= (SystemClock.uptimeMillis() - DURATION)) { mHits = new long[COUNTS];//重新初始化数组 Toast.makeText(this, "连续点击了4次", Toast.LENGTH_LONG).show(); } }

    思路:首先我们点击的时候都将数组向左移动一位,将时间赋值给最后一位,从上面的代码中我们可以看出当我们点击了四次,那么最后一位就已经被移到了第一位,然后我们比较时间:

    mHits[0] >= (SystemClock.uptimeMillis() - DURATION)

    如果是在我们规定的时间内,那么就生效,执行我们所要的操作。

    SystemClock.uptimeMillis():手机开机到现在的时间。

    注意:执行操作后需要从新初始化数组:mHits = new long[COUNTS];否则点击第六次第七次的时候也会触发事件。

    更多内容:http://77blogs.com/?p=538

  • 相关阅读:
    Linux命令应用大词典-第11章 Shell编程
    Kubernetes 学习12 kubernetes 存储卷
    linux dd命令
    Kubernetes 学习11 kubernetes ingress及ingress controller
    Kubernetes 学习10 Service资源
    Kubernetes 学习9 Pod控制器
    Kubernetes 学习8 Pod控制器
    Kubernetes 学习7 Pod控制器应用进阶2
    Kubernetes 学习6 Pod控制器应用进阶
    Kubernetes 学习5 kubernetes资源清单定义入门
  • 原文地址:https://www.cnblogs.com/tangZH/p/9832171.html
Copyright © 2011-2022 走看看