注: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.强调内容布局文件