上面的代码通过super.dispatchTouchEvent(ev)调用了DecorView的父类FrameLayout,该类倒是没有重写dispatchTouchEvent而是由它的父类ViewGroup实现:在分析ViewGroup分发事件之前还得说两结论:
1)ViewGroup永远不会对拦截,因为他的onInterceptTouchEvent(MotionEvent ev)始终返回的是false!这样DecorView对到来的事件MotionEvent就只有分发到子View并由子View进行拦截和处理此事件了.
2)View包括直接继承于View的子类因为其父类View没有onInterceptTouchEvent方法,所以没法对事件进行拦截,如果这种View获取到了事件,那么就会执行onTouchEvent方法(当然这也是有条件的,这个前提条件在对下面onTouch方法作用的时候会有说明)。
A) View类对事件的处理:
比如Button的直接父类TextVew的父类为View,那么当Button获取事件的时候其执行分发和处理的时候调用dispatchTouchEvent,就先分析一下View的这个方法都做了什么以供博客后面的篇幅用:
作者:chunqiuwei
来源:优快云
原文:https://blog.youkuaiyun.com/chunqiuwei/article/details/50164791
版权声明:本文为博主原创文章,转载请附上博文链接!