美文网首页
Android事件分发

Android事件分发

作者: bfe31c902d9b | 来源:发表于2018-07-03 15:09 被阅读31次

    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()方法来处理

    事件分发流程

    相关文章

      网友评论

          本文标题:Android事件分发

          本文链接:https://www.haomeiwen.com/subject/haaduftx.html