Android多击事件的实现

本文介绍了多击事件处理的基本原理及实现方式,包括简单的双击事件处理和更复杂的多击事件处理方法。通过使用时间差和数组记录点击次数,可以有效地实现双击或多击事件的响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

#简单的多击事件(双击)

//设置起始标记时间, 且每次点击的时候都会有更新变化
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(), "hei~ man!", 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());
            }
        }

这里写图片描述

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();
		        }
			}
		});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值