0.讨论的前提
基于api 29源码的Viewgroup分析,自定义View重写dispatchTouchEvent()方法的话也是可以自己随便生成ACTION_CANCEL事件的。
1.先说结论,如下几种情况会产生ACTION_CANCEL事件
- 在子View处理事件的过程中,父View对事件拦截
- 子View被设置了PFLAG_CANCEL_NEXT_UP_EVENT标记时
- 在子View处理事件的过程中被从父View中移除时
- 当View从Window中分离时
2.对应结论所在源码位置
1. 在Viewgroup源码中通过搜索ACTION_CANCEL出现的位置共有9处,出现在以下几个方法中,其中后四个只是在注释中
2. 结论1源码分析
3.结论2源码分析
4.结论3源码分析
5.结论4源码分析