android 多击事件的实现方法

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

1.Activity的实现

package com.example.manyclick;

import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

private Button btn_many_click;
private int length = 3;//此处为点击的次数
private long[] mHits = new long[length];//存储多次点击的时间戳
private long millis = 500;//毫秒
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn_many_click = (Button) findViewById(R.id.btn_many_click);
    btn_many_click.setOnClickListener(new MyOnManyClickListener());//添加多击事件(实际上就是利用算法吧单击事件改良成了多击事件)
}

/***
 * 多击事件
 * @author smartdot
 *
 */
class MyOnManyClickListener implements View.OnClickListener {

    @Override
    public void onClick(View v) {

        System.arraycopy(mHits, 1, mHits, 0, length-1);//自己拷贝自己,只不过错位拷贝【第二个元素拷贝到第一个元素,第一个元素拷贝到第零个元素】
        mHits[length-1] = SystemClock.uptimeMillis();//给数组的最后一个元素赋值

        if(mHits[length-1] - mHits[0] <=  millis) {//当第mHits[lengt]点击的时间戳减去mHits[0]的时间戳小于指定时间则该多击事件生效
            Toast.makeText(getApplicationContext(), "五毫秒内点击三次则弹出次文本", Toast.LENGTH_LONG).show();
        } 
    }

}

}

2.强调内容布局文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值