在Android开发中,系统并没有自带Button按钮的双击事件,这个需要我们自己来实现这种按钮双击listener事件,非常简单,可以用下面自定义的OnDoubleClickListener类来实现Android的单击与双击:
import android.os.Handler; import android.view.MotionEvent; import android.view.View; public class OnDoubleClickListener implements View.OnTouchListener { private static int timeout=400;//双击间四百毫秒延时 private int clickCount = 0;//记录连续点击次数 private Handler handler; private MyClickCallBack myClickCallBack; public interface MyClickCallBack{ void oneClick();//点击一次的回调 void doubleClick();//连续点击两次的回调 } public OnDoubleClickListener(MyClickCallBack myClickCallBack) { this.myClickCallBack = myClickCallBack; handler = new Handler(); } @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { clickCount++; handler.postDelayed(new Runnable() { @Override public void run() { if (clickCount == 1) { myClickCallBack.oneClick(); }else if(clickCount==2){ myClickCallBack.doubleClick(); } handler.removeCallbacksAndMessages(null); //清空handler延时,并防内存泄漏 clickCount = 0;//计数清零 } },timeout);//延时timeout后执行run方法中的代码 } return false;//让点击事件继续传播,方便再给View添加其他事件监听 } }
那么如何实现自定义的Button按钮双击事件呢?代码如下:
button.setOnTouchListener(new OnDoubleClickListener(new OnDoubleClickListener.MyClickCallBack() { @Override public void oneClick() { } @Override public void doubleClick() { } }));
注意点:
此处要用button或者textview的setOnTouchListener这个事件,而不是setOnClickListener事件来实现按钮的双击监听事件,这一点是要注意的。