美文网首页
Android 事件冲突

Android 事件冲突

作者: 探索的码易 | 来源:发表于2020-09-06 21:39 被阅读0次

    单点的Down 事件

    dispatchTouchEvent(MotionEvent ev)

    来处理事件分发(View 只能消耗事件,走ontouchlister 和onclicklister)
    onInterceptTouchEvent
    来返回是否拦截,拦截的话就自己处理,不拦截继续分发;
    点击之后无子view或者点击事件没有在子view 上,视为无子view处理


    image.png

    dispatchTransformedTouchEvent

    onInterceptTouchEvent 为false时候,会调用此函数来循环分发,如果都没有人处理的话,由dispatchTouchEvent 自己处理相当于onInterceptTouchEvent=true
    当某个子View 处理后,会生成一盒hand来告知上层ViewGropel有view 已经处理;下次也是单点事件也是有此view 处理


    image.png

    滑动事件

    滑动事件不再做事件的分发,只有down事件来做分发;
    正常流程:down 谁来处理move 事件谁就来处理
    拦截流程:
    父类拦截发法:比较简单,直接用onInterceptTouchEvent来做处理;
    子类拦截法: 也是首先onInterceptTouchEvent来设置为false(down事件会重置初始值),
    getParent().requestDisallowInterceptTouchEvent(true);来让设父viewGrop gorpflag 为true来接受不到是否拦截的的表达,失去拦截处理,最后落到子view的身上;

    相关文章

      网友评论

          本文标题:Android 事件冲突

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