一个用来判断是长按手势的辅助类
来源:互联网 发布:编程显示九九乘法表 编辑:程序博客网 时间:2024/06/09 18:48
一个用来判断是长按手势的辅助类
import android.content.Context;import android.os.Handler;import android.os.Looper;import android.view.MotionEvent;import android.view.ViewConfiguration;/** * Created by yyw on 2016/5/6. * 一个用来判断是长按手势的辅助类 */public class LongPressDetector { //开始位置 private float srcX = 0; //开始位置 private float srcY = 0; //被判断为滑动的最小距离 private int minToScroll; //被判断为长按的最小时间 private int minTimeToLongPress; //当前的触摸事件 private MotionEvent currentEvent; private DetectorHandler mHandler; //回调接口 private OnLongPressListener longPressListener; public LongPressDetector(Context context, OnLongPressListener longPressListener) { minTimeToLongPress = ViewConfiguration.getLongPressTimeout(); minToScroll = ViewConfiguration.get(context).getScaledTouchSlop(); mHandler = new DetectorHandler(Looper.getMainLooper()); this.longPressListener = longPressListener; } /** * 在{@link android.view.View#onTouchEvent(MotionEvent)}中调用该方法。 * 当手指在一个地方停留一段时间后会调用{@link OnLongPressListener#onLongPress(MotionEvent)}方法 * @param e MotionEvent */ public void onTouchEvent(MotionEvent e) { switch (e.getAction()) { case MotionEvent.ACTION_DOWN: currentEvent = MotionEvent.obtain(e); mHandler.removeCallbacks(mLongPress);//清除动作 srcX = e.getX();//初始化位置信息 srcY = e.getY(); mHandler.postDelayed(mLongPress, minTimeToLongPress);//开始一个延时请求 break; case MotionEvent.ACTION_MOVE: float x = e.getX(); float y = e.getY(); if (Math.abs(srcX - x) > minToScroll || Math.abs(srcY - y) > minToScroll) {//判断当前的移动距离是否可以判断为滑动,如果是滑动就重置 mHandler.removeCallbacks(mLongPress); } break; case MotionEvent.ACTION_UP: mHandler.removeCallbacks(mLongPress);//当手指抬起就清除动作 break; case MotionEvent.ACTION_CANCEL: mHandler.removeCallbacks(mLongPress);//当事件结束就清除动作 break; } } private class DetectorHandler extends Handler { public DetectorHandler(Looper looper) { super(looper); } } private Runnable mLongPress = new Runnable() { @Override public void run() { if (longPressListener != null){ longPressListener.onLongPress(currentEvent); } } }; public OnLongPressListener getLongPressListener() { return longPressListener; } public void setLongPressListener(OnLongPressListener longPressListener) { this.longPressListener = longPressListener; } /** * 当手指在一个地方停留一段时间后会调用{@link OnLongPressListener#onLongPress(MotionEvent)}方法 */ public interface OnLongPressListener{ /** * 当手指在一个地方停留一段时间后会调用{@link OnLongPressListener#onLongPress(MotionEvent)}方法 * @param e MotionEvent 当前的点击事件 */ void onLongPress(MotionEvent e); }}
0 0
- 一个用来判断是长按手势的辅助类
- 一个用来保存参数的容器类
- 一个用来保存参数的容器类
- 一个用来翻转、旋转的矩阵类
- Delphi: 一个用来控制系统音量的类
- 一个用来翻转、旋转的矩阵类
- Unity3d:一个简单的画圈圈手势判断
- 网销客是用来辅助网络营销
- 封装一个HTTP请求的辅助类
- AccessibilityService 一个类似辅助的类
- UIGestureRecognizer手势的判断
- 简单的手势判断
- 一个小技巧,用来判断一个数是是否是2的n次方
- 【android开发】手势滑动关闭Activity(随手指消失)的辅助类的实现
- 一个SqlDataReader的用法,dr.IsDBNull(2)用来判断第几列是否为null
- android 工具类:用来判断一个文件是不是图片,通过文件名
- 建立一个类Prime,用来判断某整数是否为素数。具体要求如下:
- 封装的一个用来下载图片的类
- 【oschina android源码分析】便笺系统的设计
- 逆波兰表达式
- USB调试不能弹出授权窗口 unauthorized 的解决办法
- LAN中访问其它主机的jupyter/ipython
- 【oschina android源码分析】聊天页面(私信)的设计
- 一个用来判断是长按手势的辅助类
- 【oschina android源码分析】总结
- 计算机图形学(二)输出图元_12_OpenGL顶点数组
- 【android】ImageView的src和background的区别以及两者的妙用
- 集合的引入
- JSP03
- iOS开发常见的奇葩技巧,
- 常规功能和模块自定义系统 (cfcmms)—045模块导航功能的重构(3)导航的定义
- poj 3617贪心