博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 通过onTouchEvent判断是否为双击事件
阅读量:6123 次
发布时间:2019-06-21

本文共 1988 字,大约阅读时间需要 6 分钟。

通过onTouchEvent判断是否为双击事件,通过前面一次up 跟本次down之间的时间差,并且点击的点的坐标偏移来确定是否为双击事件DOUBLE_TAP_TIMEOUT。

boolean isMove = false;        private final int DOUBLE_TAP_TIMEOUT = 200;        private MotionEvent mCurrentDownEvent;        private boolean mDoubleTapEnabled = false;        private MotionEvent mPreviousUpEvent;        @Override        public void onTouchEvent(MotionEvent event) {            Log.e(LOG_TAG, "MotionEvent="+ event.getAction()+",isMove="+isMove);            Log.e(LOG_TAG, "mPreviousUpEvent="+ mPreviousUpEvent+",mCurrentDownEvent="+mCurrentDownEvent);            if (event.getAction() == MotionEvent.ACTION_MOVE) {                                isMove = true;            }            else if (event.getAction() == MotionEvent.ACTION_DOWN) {                if (mPreviousUpEvent != null && mCurrentDownEvent != null                         && isConsideredDoubleTap(mCurrentDownEvent, mPreviousUpEvent, event)                        ) {                    if (mDoubleTapEnabled && Environment.getExternalStorageState().equals("mounted")) {                                                Toast.makeText(getApplicationContext(), getResources().getString(R.string.double_click), Toast.LENGTH_LONG).show();                                            }                }                mCurrentDownEvent = MotionEvent.obtain(event);            }else if (event.getAction() == MotionEvent.ACTION_UP){                mPreviousUpEvent = MotionEvent.obtain(event);                isMove = false;            }        }        private boolean isConsideredDoubleTap(MotionEvent firstDown, MotionEvent firstUp, MotionEvent secondDown){            if (secondDown.getEventTime() - firstUp.getEventTime() > DOUBLE_TAP_TIMEOUT) {                return false;            }                    int deltaX =(int) firstUp.getX() - (int)secondDown.getX();            int deltaY =(int) firstUp.getY()- (int)secondDown.getY();                         return deltaX * deltaX + deltaY * deltaY < 10000;        }

 

转载地址:http://ubwua.baihongyu.com/

你可能感兴趣的文章
新手如何学习 jQuery?
查看>>
配置spring上下文
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>
mysql-python模块编译问题解决
查看>>
Oracle中drop user和drop user cascade的区别
查看>>
【Linux】linux经常使用基本命令
查看>>
HTML模块化:使用HTML5 Boilerplate模板
查看>>
登记申请汇总
查看>>
Google最新截屏案例详解
查看>>
2015第31周日
查看>>
在使用EF开发时候,遇到 using 语句中使用的类型必须可隐式转换为“System.IDisposable“ 这个问题。...
查看>>
Oracle 如何提交手册Cluster Table事务
查看>>
BeagleBone Black第八课板:建立Eclipse编程环境
查看>>
在服务器上用Fiddler抓取HTTPS流量
查看>>
文件类似的推理 -- 超级本征值(super feature)
查看>>
【XCode7+iOS9】http网路连接请求、MKPinAnnotationView自定义图片和BitCode相关错误--备用...
查看>>
各大公司容器云的技术栈对比
查看>>
记一次eclipse无法启动的排查过程
查看>>
【转】jmeter 进行java request测试
查看>>
读书笔记--MapReduce 适用场景 及 常见应用
查看>>