美文网首页
Android-事件分发机制

Android-事件分发机制

作者: 挖打发 | 来源:发表于2021-05-27 20:42 被阅读0次

    1 事件传递顺序

    Activity->ViewGroup->View,所以事件分发的机制也分为Activity、viewGroup、view三种

    2 Activity事件分发

        a.图

        b 解释:调用activity的dispatchTouchEvent后,事件会从activity传递到phoneWindow,再传递到DecorView,再到viewGroup当中,然后判断viewGroup是否消费该事件,消费了的话则activity的事件分发结束且返回true,viewGroup没消费的话,则会判断点击事件是否在window边界之外,在边界之外则消费并返回true,否则在边界内则返回false

    3 ViewGroup事件分发

        a.图

        b.解释:调用viewGroup的dispatchTouchEvent后,首先判断onInterceptTouchEvent是否拦截该事件,如果拦截的话,会调用viewGroup父类(View)的dispatchTouchEvent方法,进而调用onTouch-》onTouchEvent-》PerformClick-》onClick方法,自己去处理该事件,如果没拦截的话,会遍历子view,寻找到被点击的子view,进而调用子view的dispatchTouchEvent

    4 View事件分发

        a.图

        b.解释:调用view的dispatchTouchEvent,然后判断是否注册touch事件监听,注册了的话则调用onTouch方法,onTouch如果返回true,则代表消费了事件,view的dispatchTouchEvent返回true,否则调用onTouchEvent方法,接着判断是否注册了click事件,注册了的话调用onClick方法,没注册则结束,同样,没注册touch事件监听,也是走到onTouchEvent方法,调用onclick

    相关文章

      网友评论

          本文标题:Android-事件分发机制

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