Touch事件的相关方法
dispatchTouchEvent 事件分发
onInterceptTouchEvent 事件拦截
onTouchEvent 事件响应
拥有事件方法的类
1 . Activity
dispatchTouchEvent、onTouchEvent
2 . ViewGroup类(LinearLayout、FrameLayout、ListView等.....)
dispatchTouchEvent、onInterceptTouchEvent 、onTouchEvent
3、View类(Button、TextView等.....)
dispatchTouchEvent、onTouchEvent
事件方法简单用途解析
我们可以发现这三个方法的返回值都为boolean类型,其实它们就是通过返回值来决定下一步的传递处理方向。
1、dispatchTouchEvent() ——用来分发事件所用
该方法会将根元素的事件自上而下依次分发到内层子元素中,直到被终止或者到达最里层元素,该方法也是采用一种隧道方式来分发。在其中会调用onInterceptTouchEvent()和onTouchEvent(),一般不会去重写。
返回false则不拦截继续往下分发,如果返回true则拦截住该事件不在向下层元素分发,在dispatchTouchEvent()方法中默认返回false。
2、onInterceptTouchEvent() ——用来拦截事件所用
该方法在ViewGroup源代码中实现就是返回false不拦截事件,Touch事件就会往下传递给其子View。
如果我们重写该方法并且将其返回true,该事件将会被拦截,并且被当前ViewGroup处理,调用该类的onTouchEvent()方法。
3、onTouchEvent() ——用来处理事件
返回true则表示该View能处理该事件,事件将终止向上传递(传递给其父View)
返回false表示不能处理,则把事件传递给其父View的onTouchEvent()方法来处理
事件分发流程
网友评论