onInterceptTouchEvent()与onTouchEvent()与onTouch()

来源:互联网 发布:单位正交矩阵的性质 编辑:程序博客网 时间:2024/04/27 13:22

首先讲onInterceptTouchEvent()与onTouchEvent()。

onInterceptTouchEvent()是在ViewGroup里面的,其作用主要是区分touch了ViewGroup的子View获得touch事件还是仅仅让ViewGroup本身获得。OK,那么怎么让ViewGroup获得而子View获得不了,只要在onInterceptTouchEvent()里面返回true即可。

那么当onInterceptTouchEvent()返回是false又是怎样的情况了,首先子View也是ViewGroup的话,那么在onInterceptTouchEvent()肯定能够监听的到,如果子View不是ViewGroup,那么子View的onTouchEvent()里面是肯定能够监听得到,也就是说,只要ViewGroup里面返回false,在子View里面就肯定能监听得到touch事件的存在。

Ok,onInterceptTouchEvent()事件差不多就这些作用了,剩下的就该交给onTouchEvent()了,上面在onInterceptTouchEvent()里面返回false时,说这个事件就已经交给了子View了,那么这个ViewGroup的onTouchEvent()事件还能不能监听到touch事件了,这就要看子View的心情了。如果子View的onTouchEvent()返回true,那么不好意思,子View笑纳了,这个时候ViewGroup的onTouchEvent()函数是不会有任何反应的、那么相反,ViewGroup的onTouchEvent()函数就会反应了。讲了这么多大家可能没有听懂,来个图(当然onTouchEvent返回为false,其他的事件就没有了,包括ViewGroup里面的onInterceptTouchEvent也不会执行了。且返回只在down事件里面返回有效,如在down事件里面返回true,再在move事件里面返回falseup事件照样会执行;而若在down事件里返回false,其他所有的事件都不会执行)

 

onTouch()是OnTouchListener接口里面的函数,当然只有在onTouchEvent()执行的话,这个才会执行。主要是与点击长按事件有关系,onTouch()里面返回true的话,onClick与onLongClick就不会执行;返回false的话,2者都会执行。onTouch 事件具体请参照百度文库onTouch 和onclick事件

http://wenku.baidu.com/view/8cb85d8f6529647d272852bc.html,感觉写得蛮详细的。



原创粉丝点击