美文网首页
NestedScrolling 流程总结

NestedScrolling 流程总结

作者: StyleShu | 来源:发表于2020-03-16 19:24 被阅读0次
    子View 父View
    startNestedScroll onStartNestedScroll、onNestedScrollAccepted
    dispatchNestedPreScroll onNestedPreScroll
    dispatchNestedScroll onNestedScroll
    stopNestedScroll onStopNestedScroll

    具体说明如下:
    在子 view 需要滑动的时候例如 ACTION_DOWN 的时候就要调用 startNestedScroll(ViewCompat.SCROLL_AXIS_HORIZONTAL | ViewCompat.SCROLL_AXIS_VERTICAL) 方法来告诉父 view 自己要开始滑动了(实质上是寻找能够配合 child 进行嵌套滚动的 parent)。

    父 view 会收到 onStartNestedScroll 回调从而决定是不是要配合子view做出响应。如果需要配合,此方法会返回 true。继而 onStartNestedScroll()回调会被调用。

    在滑动事件产生但是子 view 还没处理前可以调用 dispatchNestedPreScroll(0,dy,consumed,offsetInWindow) 这个方法把事件传给父 view 这样父 view 就能在onNestedPreScroll 方法里面收到子 view 的滑动信息,然后做出相应的处理把处理完后的结果通过 consumed 传给子 view。

    dispatchNestedPreScroll()之后,child可以进行自己的滚动操作。

    如果父 view 需要在子 view 滑动后处理相关事件的话可以在子 view 的事件处理完成之后调用 dispatchNestedScroll 然后父 view 会在 onNestedScroll 收到回调。

    最后,滑动结束,调用 onStopNestedScroll() 表示本次处理结束。

    相关文章

      网友评论

          本文标题:NestedScrolling 流程总结

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