安卓事件分发:事件列都是以DOWN事件开始、UP事件结束,中间有无数的MOVE事件,还有可能人员原因事件的cancel事件
事件分发的本质:
将点击事件(MotionEvent)传递到某个具体的View & 处理的整个过程
即 事件传递的过程 = 分发过程。
事件分发在Activity、ViewGroup、View及其派生类组成间传递
ViewGroup其本身也是view的子类,是安卓所有布局的父类,ViewGroup实际也是一个view,只是多了可包含子view定义布局参数的功能
例如:
1.首先会将点击事件传递到Activity中,具体是执行dispatchTouchEvent()进行事件分发
2.用户点击具体view控件,然后ViewGroup.dispatchTouchEvent,ViewGroup.onInterceptTouchEvent(事件拦截 false,true),false允许事件继续向子view传递(寻找被点击的子view(遍历所有子view,找到被点击的子view,调用子view控件的dispatchTouchEvent)), true(需要手动复写设置)不允许事件继续向子view传递(事件返回父类,ViewGroup父类dispatchTouchEvent,然后滴哦用自己的OnTouch -> onTouchEvent -> performClick ->OnClick)结束
网友评论