Android高级ui13-nestedscrollview嵌套滚动机制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android高级ui13-nestedscrollview嵌套滚动机制相关的知识,希望对你有一定的参考价值。

参考技术A 学习笔记,整理中;

面:

android.overridePathCheck = true

自己思路整理:

1、MyNestedScrollChildLextends LinearLayoutimplements NestedScrollingChild

onTouchEvent主要处理此方法,在action_down中 startNestedScroll开始找寻父级的嵌套滚动view; 在action_move中dispatchNestedPreScroll 先分发给父级消费,返回true父级消费完再回来。如果需要二次问询则不要pre,还是先问再回来;action_up处理stopNestedScroll  以及fling 惯性滚动,逻辑类似

2、MyNestedScrollParentLextends LinearLayoutimplements NestedScrollingParent

onNestedPreScroll主要处理此方法,注意要处理消费和滚动,并且过度滚动情况

3、NestedScrollingParentHelper helper --里面已处理大部分情况

---------------------------------------------------------------------------------------------------------

摘要:

嵌套滑动机制

NestedScrollView  属于MD控件

分析嵌套滑动机制 原理

事件序列

down -> ..... move  -> up/cancel

1. view down没有消费,那么后续的move  没办法再接收到了

分发

activity -> viewgroup -> view

消费

view -> viewgroup -> activity

嵌套滑动

> mTouchslop 最小滑动距离

canScrollVertically(-1) <0

scrollBy 移动屏幕

传统的事件冲突解决方案

OverScroller

为什么需要

嵌套滑动机制 并没有改变事件分发机制

NestedScrollingParentLayout extends LinearLayout implements NestedScrollingParent

NestedScrollingParent接口 可滑动的viewgroup 充当父view

NestedScrollingChild接口                    充当子view

孔融让梨

1.  -》 父亲  dispatchNestedPreScroll

            1. 全部吃了

2. 咬一口  还要剩余

2. 孔融再吃

            1. 全部吃完

            2. 咬两口  还要剩余

-》  父亲 dispatchNestedScroll

          1. 全部吃了

  2. 又咬一口  还要剩余

2. 孔融再吃2 

            1. 全部吃完

int type 事件类型:

        touch

        fling

NestedScrollView

1. 梳理了事件分发机制

2. 为什么需要嵌套滑动机制 解决传统事件滑动机制的bug

3. 介绍了NestedScrollingParent NestedScrollingChild

NestedScrollingChildHelper

NestedScrollingParentHelper

内容:

以上是关于Android高级ui13-nestedscrollview嵌套滚动机制的主要内容,如果未能解决你的问题,请参考以下文章

Android基础——高级UI组件:选项卡

Android 高级UI解密 :Paint图形文字绘制 与 高级渲染

Android 高级UI解密 :Paint图形文字绘制 与 高级渲染

Android 高级UI设计笔记09:Android如何实现无限滚动列表

android高级UI之补间动画和属性动画

Android基础——高级UI组件:下拉框,列表,滚动条视图