如何在onTouch中实现双击事件?要求代码尽可能简单

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在onTouch中实现双击事件?要求代码尽可能简单相关的知识,希望对你有一定的参考价值。

参考技术A 可以这样,在你的view上面view.onTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 10f, 10f, 0));模拟一次点击事件,参数为downTime The time (in ms) when the user originally pressed down to start a stream of position events. This must be obtained from SystemClock.uptimeMillis().eventTime The the time (in ms) when this specific event was generated. This must be obtained from SystemClock.uptimeMillis().action The kind of action being performed -- one of either ACTION_DOWN, ACTION_MOVE, ACTION_UP, or ACTION_CANCEL.x The X coordinate of this event.y The Y coordinate of this event.metaState The state of any meta / modifier keys that were in effect when the event was generated.追问

麻烦格式化一下代码啊,这样都没法看……

如何解决blur事件和click事件冲突问题

在Android中,对一个View同时调用OnTouch事件和OnClick事件时,导致事件冲突,比如onClick事件打算执行A动作,OnTouch事件打算执行B动作,但是在实际使用时会发现,当调用OnTouch时,有可能会同时执行A,B两个动作,这是因为OnClick事件本身就是在OnTouch事件中发生的;在onTouch事件中,如果返回true,就不会执行onClick,返回false,就同时执行onClick方法,要想把OnTouch和onClick事件完全的区分。可能过下列方法,解决该冲突问题:就是在OnTouch中的MotionEvent.ACTION_DOWN时,记录下点(X1,Y1),在MotionEvent.ACTION_UP时,记录下点(X2,Y2),然后比对俩点之间的距离,如果小于一个较小数值(比如5),就认为是Click事件,onTouch中返回false,如果距离较大,可以当作onTouch事件去处理,返回true:示范如下:publicbooleanonTouch(Viewv,MotionEventevent)if(event.getAction()==MotionEvent.ACTION_DOWN)x1=event.getX();y1=event.getY();if(event.getAction()==MotionEvent.ACTION_UP)x2=event.getX();y2=event.getY();if(Math.abs(x1-x2)60)//真正的onTouch事件returntrue;//返回true,不执行click事件 参考技术A 1.如果click事件比blur事件早触发就没有问题了,所以可以给blur事件加一个时间(延迟触发),如:setTimeout(fn, 250); 2. 添加mouseover,mouseout 。本回答被提问者采纳 参考技术B 怎么会冲突呢?你是怎么设置的onblur 和 onclick

以上是关于如何在onTouch中实现双击事件?要求代码尽可能简单的主要内容,如果未能解决你的问题,请参考以下文章

如何解决blur事件和click事件冲突问题

如何解决控件的onTouch事件与onClick事件的冲突问题

OpenGL中实现双缓冲技术

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

双击,也触发了双击

如何解决onTouch和onClick事件冲突的问题