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解密 :Paint图形文字绘制 与 高级渲染
Android 高级UI解密 :Paint图形文字绘制 与 高级渲染