在Android中给我们提供了单次点击事件。但并没有给我们提供双击,或者实现在一定时间内的多次事件。所以需要我们自己在单机监听上进行修改实现。
有如下两种实现方式:
1、定义一个存贮上一个第一次点击的变量,如果两次时间间隔小于500毫秒,则认为是双击时间。
实现如下:
package com.andy.doubleclick;
import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.Toast;
/**
* @author Zhang,Tianyou
* @version 2014年12月02日 上午10:51:56
*/
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private long startClickTime;
public void click(View view) {
long nextClickTime = SystemClock.uptimeMillis();
if (startClickTime <= 0) {
startClickTime = SystemClock.uptimeMillis();
return ;
}else {
if (nextClickTime - startClickTime < 500) {
Toast.makeText(this, "被双击了", Toast.LENGTH_SHORT).show();
startClickTime = 0L;
} else {
startClickTime = SystemClock.uptimeMillis();
}
}
}
}
这种方式有个缺陷,如果要实现多次点击,那么就需要定义存贮多个事件点的变量,很显然不适合多次点击的处理。
2、使用Google提供的api中采用的算法。
能够实现n次点击事件,我们需要定义一个n长度的数组,每点击一次将数组里的内容按序号整体向左移动一格,然后给n-1出即数组的最后添加当前的时间,如果0个位置的时间大于当前时间减去500毫秒的话,那么证明在500毫秒内点击了n次。
实现如下: