通过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;
}

Android 通过onTouchEvent判断是否为双击事件的更多相关文章

  1. Android 自定义View实现单击和双击事件

    自定义View, 1. 自定义一个Runnable线程TouchEventCountThread ,  用来统计500ms内的点击次数 2. 在MyView中的 onTouchEvent 中调用 上面 ...

  2. Android实现双击事件的两种方式

    Work around的方法是先监听onTouch事件来监听连续点击次数,每次点击都布置一个间隔时间的延时任务,延时任务执行时判断间隔内是否还有点击,如果没有则发布点击次数,重置计数. 实现代码如下: ...

  3. 关于android 双击事件

    大家好,关于android双击事件 我相信大家都知道 API中是有个方法的,但是必须在Activity中在能使用. 对于到底用不用android 双击事件API各有各的看法. 在Activity中使用 ...

  4. Android中实现双击事件

    需求:需要给一个view实现双击效果,查看了api,发现没有api可以调用, 于是从网上参考了一段代码. xml布局文件: <RelativeLayout xmlns:android=" ...

  5. Android判断Touch为滑动事件还是操作控件

    Android判断Touch为滑动事件还是操作控件 因为在项目中要判断WebView是否处于滚动状态,但它不像ListView有onScrollStateChanged方法来监听,要实现就得手动监听它 ...

  6. Android 使用 OnTouchListener 接口监听双击或多击事件

    这里是使用 OnTouchListener 实现的监听双击 or 多击的监听器.通过 View.setOnTouchListener ,可以实现在任意 View 上监听双击事件. 网上有许多文章简单的 ...

  7. AS3 判断双击事件

    //双击事件触发的时候不触发单击事件 package { import com.greensock.TweenLite; import flash.display.DisplayObjectConta ...

  8. andorid 中如何实现双击事件

    项目需求: android中只有单击和其他事件,其实都是由OnTouch事件演变而来:最近有项目要求双击全屏,所以就试着实现了下 具体实现如下: 1.MainActivity.java实现: publ ...

  9. 【Android - 自定义View】之View的事件分发机制

    参考资料: View事件分发:http://blog.csdn.net/pi9nc/article/details/9281829 ViewGroup事件分发:http://blog.csdn.net ...

随机推荐

  1. IIS7如何实现访问HTTP跳转到HTTPS访问

    感谢原文作者,为方便后期查阅转载,原文链接:https://www.cnblogs.com/xiefengdaxia123/p/8542737.html 通常情况下我们是用的都是http的路径,对于h ...

  2. pycharm 有些模块没有提示 解决方法

    解决方法:右键模块所在文件夹,选择make directory as ,选择excluded或者sources root,即可.

  3. net::ERR_CONNECTION_RESET 问题排查

    后台服务器代码有问题 实体不对称,导致映射不对

  4. apache ab 结果Failed requests探究

    Failed requests: 537 (Connect: 0, Receive: 3, Length: 268, Exceptions: 266) Receive:当客户端connect成功后,并 ...

  5. Linux学习笔记:安装python

    一般linux自带python2,如果需要python3以上版本,可以不需要卸载自带的python2,二者可以共存.只需要配置相应的环境变量即可. 具体回答可以参考这篇文章 https://stack ...

  6. 【转】【机器学习】R 正则化函数 scale

    源:http://blog.163.com/shen_960124/blog/static/60730984201582594011277/ 1. 数据的中心化 所谓数据的中心化是指数据集中的各项数据 ...

  7. window环境下修改postgrep密码

    本机window7 64位系统,安装的PostgreSQL 9.3 默认安装是没有设置密码的,使用pgAdmin III登陆需要登陆密码. 我们使用默认安装的工具 SQL Shell 来操作. 我们依 ...

  8. Java学习笔记day_01

    Java学习笔记(复习整理) 虽然不知道该怎么写,但是不起步就永远不知道该怎么做..刚开始可能会写的很差劲,但会一点一点变好的. 本笔记是以我按照传智播客的视频和Java核心思想来学习,前面的基础部分 ...

  9. 给div"上"滑动条

    最近做项目时修改一个遗留的bug,大概是这样:有一个聊天窗口,用户聊天内容展现在窗口上.其实这个窗口是一个带滑动条的div,随着聊天内容的添加,滑动条也越来越长了,这不是重点,重点是每次刷新窗口时候, ...

  10. Effective C++ 笔记:条款 34 实现继承和接口继承

    Differentiate between inheritance of interface and inheritance of implementation. 行为含义 声明一个pure virt ...