android OnTouchListener OnClickListener实现单击和双击
2020-07-02 11:34
555 查看
钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>
package com.kaikeba.android.smallVideo.lisener; import android.os.Handler; import android.view.View; public class DoubleClickListener implements View.OnClickListener { //记录连续点击次数 private int clickCount = 0; private Handler handler; private DoubleClickCallBack myClickCallBack; public interface DoubleClickCallBack { //点击一次的回调 void oneClick(View view); //连续点击两次的回调 void doubleClick(View view); } public DoubleClickListener(DoubleClickListener.DoubleClickCallBack myClickCallBack) { this.myClickCallBack = myClickCallBack; handler = new Handler(); } @Override public void onClick(View v) { clickCount++; //双击间二百毫秒延时 int timeout = 200; handler.postDelayed(() -> { if (clickCount == 1) { myClickCallBack.oneClick(v); } else if (clickCount == 2) { myClickCallBack.doubleClick(v); } //清空handler延时,并防内存泄漏 handler.removeCallbacksAndMessages(null); //计数清零 clickCount = 0; }, timeout);//延时timeout后执行run方法中的代码 } }
package com.kaikeba.android.smallVideo.lisener; import android.os.Handler; import android.util.Log; import android.view.MotionEvent; import android.view.View; public class DoubleTouchListener implements View.OnTouchListener { //记录连续点击次数 private int clickCount = 0; private Handler handler; private DoubleClickCallBack myClickCallBack; private static final String TAG = "DoubleTouchListener"; @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); switch (action){ case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP: float x= event.getX(); float y= event.getY(); Log.e(TAG, "onTouch: "+x+" y:"+y ); clickCount++; //双击间二百毫秒延时 int timeout = 200; handler.postDelayed(() -> { if (clickCount == 1) { myClickCallBack.oneClick(v); } else if (clickCount == 2) { myClickCallBack.doubleClick(v,x,y); } //清空handler延时,并防内存泄漏 handler.removeCallbacksAndMessages(null); //计数清零 clickCount = 0; }, timeout);//延时timeout后执行run方法中的代码 break; } return false; } public interface DoubleClickCallBack { //点击一次的回调 void oneClick(View view); //连续点击两次的回调 void doubleClick(View view,float x,float y); } public DoubleTouchListener(DoubleTouchListener.DoubleClickCallBack myClickCallBack) { this.myClickCallBack = myClickCallBack; handler = new Handler(); } }
相关文章推荐
- Android通过onTouch事件实现单击,双击,长按
- Android通过onTouch事件实现单击,双击,长按
- android安卓如何实现单击提示“再按一次退出”,双击退出,实现双击监听
- Android中使用OnClickListener接口实现按钮点击的低级失误
- Android中onTouchListener、onTouchEvent、onClickListener有什么区别
- Android学习(4)Button的OnClickListener的三种实现方法
- android imageSwitcher onTouch怎么实现每张图的单击
- Android中用手势的双击事件实现图片单击放大效果
- 菜鸟学android之二--OnClickListener的三种实现方法 ,acticity之间的传值,数值格式化(附实例:计算BMI数值)
- 学Android---实现OnClickListener的三种方法
- android view实现onclick单击,doubleclick双击回调,而且不冲突。
- 黑马程序员-Android setOnClickListener的实现的三种方法
- android 实现button单击双击事件同时监控
- android安卓如何实现单击提示“再按一次退出”,双击退出,实现双击监听
- android通过注解实现findViewById 和 setOnClickListener
- android.onclicklistener的多种实现方式
- android view实现onclick单击,doubleclick双击回调,而且不冲突。
- 三种Android单击事件onclick的实现方法
- android 中view 的OnTouchListener和OnClickListener的区别
- android onClick方法改造实现双击事件