Android多击事件的实现

原理

多击事件主要利用的是时间差内纪录的点击此数,若达到了程序员事先设定的某种要求,则响应点击事件;若没有达到,则不会响应

简单的多击事件(双击)

private long startTime = 0;
bt_click.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //两次点击在一定的时间间隔内,才是双击
                if(startTime!=0){
                    long endTime = System.currentTimeMillis();
                    //通过判断来控制两次点击的时间差控制范围
                    if(endTime-startTime<500){
                        Toast.makeText(getApplicationContext(), "是男人", 0).show();
                    }
                }
                startTime = System.currentTimeMillis();
            }
        });

该方法要实现双击以上,将会变得很复杂,因此google提供了高效的方法.

google提供的多击事件

    System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
        mHits[mHits.length-1] = SystemClock.uptimeMillis();
        if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.setClassName("android",
                    com.android.internal.app.PlatLogoActivity.class.getName());
            try {
                startActivity(intent);
            } catch (Exception e) {
                Log.e(LOG_TAG, "Unable to start activity " + intent.toString());
            }
        }

Android多击事件的实现_第1张图片

System.arraycopy方法拷贝数组到另一个数组中,自己也可以拷贝到自己
System.arraycopy(mHits, 1, mHits, 0, length-1)
数组索引:【0】【1】【2】
每一次点击到都将数组的索引往前移动一位
【2】到【1】,【1】到【0】//最后一位可重新赋值(时间戳)

根据google点击事件修改

//通过数组来控制需要点击的次数,此处是3击事件
private long[] mHits = new long[3];
bt_many_click.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //1,原数组(要被拷贝的数组)
                //2,原数组的拷贝起始位置索引值
                //3,目标数组(原数组的数据---拷贝-->目标数组)
                //4,目标数组接受值的起始索引位置
                //5,拷贝的长度
                System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
                mHits[mHits.length-1] = SystemClock.uptimeMillis();
                if(mHits[mHits.length-1]-mHits[0]<500){
                    //响应了一个三击事件
                    Toast.makeText(getApplicationContext(), "超级赛亚人!!!!", 0).show();
                }
            }
        });

大功告成,谢谢观赏

你可能感兴趣的:(android基础)