6037b015b7180bcd35664596027f06bbf48f7e67.svn-base 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package eVVM.apk.helper;
  2. import android.os.Handler;
  3. import android.view.MotionEvent;
  4. import android.view.View;
  5. /**
  6. * Created by Android Studio.
  7. * User: zbb
  8. * Date: 2019/6/18
  9. * Describe: MyClickListener
  10. */
  11. public class MyClickListener implements View.OnTouchListener{
  12. private static int timeout=400;//双击间四百毫秒延时
  13. private int clickCount = 0;//记录连续点击次数
  14. private Handler handler;
  15. private MyClickCallBack myClickCallBack;
  16. public interface MyClickCallBack{
  17. void onDown();
  18. void onUp();
  19. void oneClick();//点击一次的回调
  20. void doubleClick();//连续点击两次的回调
  21. }
  22. public MyClickListener(MyClickCallBack myClickCallBack) {
  23. this.myClickCallBack = myClickCallBack;
  24. handler = new Handler();
  25. }
  26. @Override
  27. public boolean onTouch(View v, MotionEvent event) {
  28. if (event.getAction() == MotionEvent.ACTION_DOWN) {
  29. myClickCallBack.onDown();
  30. clickCount++;
  31. handler.postDelayed(new Runnable() {
  32. @Override
  33. public void run() {
  34. if (clickCount == 1) {
  35. myClickCallBack.oneClick();
  36. }else if(clickCount==2){
  37. myClickCallBack.doubleClick();
  38. }
  39. handler.removeCallbacksAndMessages(null);
  40. //清空handler延时,并防内存泄漏
  41. clickCount = 0;//计数清零
  42. }
  43. },timeout);//延时timeout后执行run方法中的代码
  44. }
  45. if (event.getAction() == MotionEvent.ACTION_UP){
  46. myClickCallBack.onUp();
  47. }
  48. return false;//让点击事件继续传播,方便再给View添加其他事件监听
  49. }
  50. }