触摸事件从Activity的dispatchEvent开始处理,其实还是由DecorView开始处理
image.png
setOnTouchListener中的onTouch在OnTouchEvent前面,这样设计方便可以没有入侵的取消对触摸事件的处理。

Android触摸事件全过程分析:由产生到Activity.dispatchTouchEvent()

==================================================
https://www.jianshu.com/p/db3...
image.png

触摸事件的分发(ViewGroup篇之一)

https://www.jianshu.com/p/065...
image.png
https://www.jianshu.com/p/724...
https://www.jianshu.com/p/065...

ViewGroup中dispatchTouchEvent
1.如果是down 清空touchTarget
2.如果是down且firstTouchTarget!=null 情况 判断是不是需要拦截
3.如果是down或者多点触控且没cancel也没intercept,根据z轴在上的顺序遍历,已有的target里找到就结束
4.分发事件,target为空就调用view的DispatchTouchEvent,否则就分发给所有的target

View中dispacthTouchEvent
先执行onTouchListener
再执行onTouchEvent
onTouchEvent中会进行click和longClick的判断


程浩
21 声望2 粉丝