触发事件传递

来源:互联网 发布:js控制标签隐藏 编辑:程序博客网 时间:2024/04/28 15:49

一、View(Button,TextView等)

点击事件,正常执行顺序:

按下触发ACTION_DOWN

(Activity)dispatchTouchEvent->(View)dispatchTouchEvent->(View)注册的onTouch监听事件->(View)onTouchEvent


接着弹起触发ACTION_UP

(Activity)dispatchTouchEvent->(View)dispatchTouchEvent->(View)注册的onTouch监听事件->(View)onTouchEvent->(View)onClick监听事件


如果不想执行onClick监听事件,则可以在onTouch监听事件中返回true,则不会执行onTouchEvent,也就不会去执行onClick监听事件


二、ViewGroup(LinearLayout,ListView等)

点击事件,正常执行顺序:

按下触发ACTION_DOWN

(Activity)dispatchTouchEvent->(ViewGroup)dispatchTouchuEvent->(ViewGroup)onInterceptTouchEvent->(View)dispatchTouchEvent->(View)注册的onTouch监听事件->(View)onTouchEvent


接着弹起触发ACTION_UP

(Activity)dispatchTouchEvent->(ViewGroup)dispatchTouchuEvent->(ViewGroup)onInterceptTouchEvent->(View)dispatchTouchEvent->(View)注册的onTouch监听事件->(View)onTouchEvent->(View)onClick监听事件


这里如果ViewGroup的onInterceptTouchuEvent返回true,则下面的View事件不会执行,而会执行(ViewGroup)注册的onTouch监听事件->(ViewGroup)onTouchEvent->(ViewGroup)注册的onClick监听事件



一篇比较好的事件传递文章:http://blog.csdn.net/lmj623565791/article/details/39102591





0 0
原创粉丝点击