通过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. Eclipse oxygen 版本汉化教程

    Eclipse oxygen 版本汉化步骤如下: 第一步:打开Eclipse 第二步:浏览器打开网址 http://www.eclipse.org/babel/downloads.php 1.复制对应 ...

  2. 2018年 js 简易控制滚动条滚动的简单方法

    首先是es2015 的新api Element.scrollIntoView() // 滚动到最上方 等同于 dom.scrollIntoView(true) Element.scrollIntoVi ...

  3. Python语言学习之Python入门到进阶

    人们常说Python语言简单,编写简单程序时好像也确实如此.但实际上Python绝不简单,它也是一种很复杂的语言,其功能特征非常丰富,能支持多种编程风格,在几乎所有方面都能深度定制.要想用好Pytho ...

  4. Linux初次修改环境变量

    对于刚刚从windows系统跳到Linux的小白们,相信多少都会出现一些强迫症,希望能将Linux的Terminal能调出点色彩,让其好看些.之前自己也不知道怎么按着百度的教程操作完成的,直到组里新来 ...

  5. 512MB内存VPS服务器安装宝塔WEB客户端建站 - 环境部署篇

    原本以为我们很多网友用VPS搭建网站不会用WEB面板,而采用一键包或者自己部署编译环境,但是最后发现其实目前我们使用WEB面板的还是挺多的,无论是免费还是付费的都有不少人使用.比如当初一直免费的AMH ...

  6. python-常见用法

    一.注释 单行注释:#后全部注释 多行注释:'''所有内容'''  或者使用 """所有内容"""  ,多行注释用三对单引号或双引号包裹 二 ...

  7. python 10 迭代器和三元运算符

    一.迭代器 1.迭代器协议:对象必须提供一种next方法,执行该方法要么返回迭代中的下一项,要么引起一个stopIteration异常,终止迭代 2.可迭代对象:实现了迭代器协议的对象 3.pytho ...

  8. IEC2017级_1-2班2次博客作业成绩说明

    一.博客作业内容 2018上IEC计算机高级语言(C)作业 第2次作业 二.评分规则说明 1.程序调试题,要描述出调试所遇到问题及修改内容,并表述清楚程序功能.流程图不规范的会减1-2分: 2.知识点 ...

  9. Android 系统启动过程简单记录

    本文记录Android系统启动过程,包含从linux kernerl到luancher启动完成的过程: 1.linux内核完成系统设置后,会在系统文件中寻找‘init’文件,然后启动root进程或者说 ...

  10. clouderamanager安装

    下载地址 http://archive.cloudera.com/cm5/cm/5/ 安装 先安装manager,再安装cdh 待续