布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/bt_double"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="响应双击事件" />
<Button
android:id="@+id/bt_mult"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="响应多次点击事件" />
</LinearLayout>
Java代码:
package com.liangdianshui.test;
import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
/**
* Created by 两点水 on 2015/8/23.
*/
public class TestDoubleClickAndMultipleClick extends Activity {
private Button bt_double;
private Button bt_mult;
private long fist_click_time; //记录第一次点击时的时间
long[] mHits = new long[3];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_testdoubleclickandmultipleclick);
bt_double = (Button) findViewById(R.id.bt_double);
bt_mult = (Button) findViewById(R.id.bt_mult);
//响应双击的点击事件
bt_double.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (fist_click_time > 0) {
long sencond_click_time = SystemClock.uptimeMillis(); //获取第二次点击的时间
long dt = sencond_click_time - fist_click_time;
if (dt < 500) { //两次点击的按钮的时间间隔不超过500毫秒
Toast.makeText(TestDoubleClickAndMultipleClick.this, "这是双击事件", Toast.LENGTH_LONG).show();
} else {
fist_click_time = 0;
}
return;
}
fist_click_time = SystemClock.uptimeMillis();//获取开机时CPU记录的时间
new Thread() {
public void run() {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
fist_click_time = 0;
}
}.start();
}
});
//long[] mHits = new long[3]; 只要修改数组中的值就能实现多次点击事件,3就是三次点击,2就是两次点击
bt_mult.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**
arraycopy(Object src, 拷贝的源数组
int srcPos, 从源数组的那个位置开始拷贝
Object dst, 目标数组
int dstPos, 从目标数组的那个位子开始写数据
int length); 拷贝的元素的个数
*/
System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);
mHits[mHits.length - 1] = SystemClock.uptimeMillis();
if (mHits[0] >= (SystemClock.uptimeMillis() - 500)) {
Toast.makeText(TestDoubleClickAndMultipleClick.this, "3次点击事件", Toast.LENGTH_LONG).show();
}
}
});
}
}
运行结果:
多次点击事件代码解释图片: