8月25日

事件分发

  1. 事件分发的对象是MotionEvent,通过触摸屏幕和点击按键产生
  2. 事件分发的组件包括Activity,ViewGroup,View以及硬件驱动。
  3. 事件传递的方法,Native通过监听,读取dev/input/eventX文件产生新事件,发送给Java层。经过上面提到的组件,主要通过dispatchTouchEvent(),onInterceptTouchEvent(),onTouchEvent()三个方法传递,拦截和消费
  4. Activity和View没有OnInterceptTouchEvent方法,无需拦截事件
  5. 在调用子View的dispatchTouchEvent时会判断是否设置了onTouchListener,会回调onTouch方法,返回true则为已经消费了,就不会调用onTouchEvent()的方法及内部的OnClick()方法
  6. 处理滑动冲突的方式1.外部拦截:由重写父View在onInterceptTouchEvent()根据业务来判断move事件是否要拦截事件,down和up事件不拦截。2. 内部拦截,父View除了down事件都拦截,然后由子View通过requesDisallowInterceptTouchEvent()来控制父类是否要拦截,或者交给子View处理