Android continuous click event processing

Android continuous click event processing

Core method: System.arraycopy()Copy part of an array to another array

System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)Parameter Description:

Object src Source array
int srcPos Copy start position of source array
Object dest Target array
int destPos The starting position of the target array
int length Copy length

Code:

/**
 * 连续点击相关设置
 */
private static final int CLICK_COUNT = 3; //连续点击的次数
private static long DURATION = 1500; // 完成连续点击持续的时间
private long[] mClickArray = new long[CLICK_COUNT]; // 保存点击时间的数组

 /**
  * 执行连续点击事件
  */
public void executeContinuousClickEvent(){
    
    
    
        // 每次点击让数组前进一位
        System.arraycopy(mClickArray, 1, mClickArray, 0, mClickArray.length - 1);
    
        // 为数组的最后一个位置赋值(SystemClock.uptimeMillis()表示系统开机到现在的时间总数,单位是ms)
        mClickArray[mClickArray.length - 1] = SystemClock.uptimeMillis();
    
        /** 当用户完成3次点击时,判断一下完成三次点击使用的时间是否在DURATION范围之内
                     click1   click2        click3
                        ↓      ↓              ↓
          -------|------------------------------|----------> 时间轴(SystemClock.uptimeMills())
                 |<—————————— DURATION ————————>|
        */
        if(mClickArray[0] >= SystemClock.uptimeMillis() - DURATION){
    
    
            // 完成连续点击事件后初始化数组
            mClickArray = new long[CLICK_COUNT];
            XToast.showError("连续点击");
        }
    }

Guess you like

Origin blog.csdn.net/C_biubiubiu/article/details/111164932