美文网首页
Android:事件传递总结

Android:事件传递总结

作者: 我在等你回复可你没回 | 来源:发表于2018-08-11 16:41 被阅读22次

    事件传递

    MOVE被父view拦截后,还能再传递给子view吗?

    不会,只要MOVE被拦截了,后续时间都不会再传给子view。

    requestDisallowInterceptTouchEvent什么时候会失效?

    findview之后直接调用getParent.requestDisallowInterceptTouchEvent时不会生效的,只有在自己捕获了一次事件,在view的onTouchEvent中调用这个方法才行。

    子view和父view的传递流程简单描述一下

    假设最高层View叫OuterLayout,中间层View叫InnerLayout,最底层View叫MyVIew。调用顺序是这样的(假设各个函数返回的都是false)
    OuterLayout.onInterceptTouchEvent->InnerLayout.onInterceptTouchEvent->MyView.onTouchEvent->InnerLayout.onTouchEvent->OuterLayout.onTouchEvent。
    参考:
    https://blog.csdn.net/Scorpio_gao/article/details/52789863

    各种拦截场景描述一下

    1.viewGroup拦截事件,在onInterceptTouchEvent返回true即可。这次返回了true之后,后续还会在调用onInterceptTouchEvent吗?答案时不会。因为他就是目标。还有可能传给子view吗?没有可能了,即使在viewGroup的onTouchEvent返回false,也是把事件传给上一层的viewGroup而已。

    2.子view拦截事件之后,就有主动权了,可以调用getParent.requestDisallowInterceptTouchEvent来阻止上层来拦截应用。简直有种获取root权限的感觉有没有。就像人生抓住一次机会,可能就成功了。

    相关文章

      网友评论

          本文标题:Android:事件传递总结

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