标签:
首先确定有三种,由内向外依次为:
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!
标签:
原文地址:http://www.cnblogs.com/gyzboy/p/4518188.html