码迷,mamicode.com
首页 > 其他好文 > 详细

让你分分钟明白onTouchEvent事件分发

时间:2015-05-20 22:11:14      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

首先确定有三种,由内向外依次为:

1、View自己的onTouchEvent

2、ViewGroup的onTouchEvent,由于要管理它的子View的onTouchEvent,所以多了个onInterceptTouchEvent(鼓励重载这个而不是dispatchTouchEvent,因为后者是对ViewGroup共性的提取,前者才是针对个例)

3、Activity的onTouchEvent

三者都是先处理setOnTouchEvent的onTouch事件,返回true表示不想下传递,就不进入到onTouchEvent中了

先说ViewGroup的onInterceptTouchEvent,两种情况:

    ①、返回值为True,代表拦截这次事件,直接进入到ViewGroup的onTouchEvent中,就不会进入到View的onTouchEvent了

    ②、返回值为False,代表不拦截这次事件,不进入到ViewGroup的onTouchEvent中,直接进入到View的onTouchEvent中

再说三者的onTouchEvent:

   ①、View的onTouchEvent返回为false表示view处理完onTouchEvent后不消费这次事件,那么这个事件就会继续传递到他的上一层ViewGroup的onTouchEvent事件中,返回true的话就传递完毕,进入不到ViewGroup的onTouchEvent中了

  ②、ViewGrop的onTouchEvent返回为false表示这个ViewGroup处理完onTouchEvent后不消费这次事件,这个事件就会继续传递到activity的onTouchEvent中,返回为true的话就传递完毕,进入不到activity的onTouchEvent中了

  ③、activity的onTouchEvent,就这样吧 `(*∩_∩*)′

 

总之,如果最里层的返回false就会交给他的上一层处理,否则就会消费这次事件,停止传递,over!

让你分分钟明白onTouchEvent事件分发

标签:

原文地址:http://www.cnblogs.com/gyzboy/p/4518188.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!