View的onTouch的返回值关系到onClick,onLongClick事件发生:
一,返回false
首先是onTouch事件的down事件发生,此时,如果长按,触发onLongClick事件;
然后是onTouch事件的up事件发生,up完毕,最后触发onClick事件。
二,true
首先是onTouch事件的down事件发生,然后是onTouch事件的up事件发生;期间不触发onClick和onLongClick事件
三,onTouch:down返回true,up返回false:结果同二。
机制分析:
onTouch事件中:down事件返回值标记此次事件是否为点击事件(返回false,是点击事件;返回true,不记为点击事件),而up事件标记此次事件结束时间,也就是判断是否为长按。
只要当down返回true时候,系统将不把本次事件记录为点击事件,也就不会触发onClick或者onLongClick事件了。因此尽管当up的时候返回false,系统也不会继续触发onClick事件了。
四,onTouch:down返回false,up返回true:
首先是onTouch事件的down事件发生,此时:
长按,触发onLongClick事件,然后是onTouch事件的up事件发生,完毕。
短按,先触发onTouch的up事件, 到一定时间后,自动触发onLongClick事件。
机制分析:
onTouch事件中:down事件返回值标记此次事件是否为点击事件(返回false,是点击事件;返回true,不记为点击事件),而up事件标记此次事件结束时间,也就是判断是否为长按。
当down返回false,标记此次事件为点击事件,而up返回了true,则表示此次事件一直没有结束,也就是一直长按下去了,达到长按临界时间后,自然触发长按事件,而onClick事件没有触发到。
分享到:
相关推荐
解决了android悬浮框的onTouch和onClick事件可以同存的问题。
此Demo是我进行改进的,既可以通过OnTouch对图片进行放大缩小移动,也可以对图片进行OnClick点击,OnLongClick点击。不会出现冲突。
下面小编就为大家带来一篇详谈Android中onTouch与onClick事件的关系(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
有一个Button 按钮,要想为该按钮设置onClick事件和OnTouch事件 mTestButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Log.d(TAG, onClick execute); } }...
用于解决一个界面内同时存在多个不同类型监听冲突的方法,实现类似QQHD版窗口拖动滚动点击效果
Android onTouch事件传递机制
OnTouch事件的机制,容易出错的地方
可直接运行的手势操作onTouch事件的demo
相信不少朋友在刚开始...分不清onTouch(),onTouchEvent()和OnClick()之间的关系和先后顺序,所以觉得有必要搞清onTouch事件传递的原理。经过一段时间的琢磨以及相关博客的介绍,这篇文章就给大家详细的分析介绍下。
onInterceptTouchEvent和onTouchEvent调用关系详解
Android onTouch机制源码,重写dispatchTouchEvent和onTouchEvent事件,通过日志观察执行顺序
android click 和onTouch 事件处理机制,极其详细介绍
使用OnTouch实现一个控件同时设置单击、双击、长按事件监听。
下面小编就为大家带来一篇老生常谈onTouch和onTouchEvent(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
新手学习Android, ontouch事件处理的三种写法,1、接口实现,2、内部类,3、匿名内部类
Android onTouch事件传递机制
OnTouch的简单demo,介绍了各个事件、基本方法的使用。非常简单的介绍。高手可以无视。