专栏名称: 郭霖
Android技术分享平台,每天都有优质技术文章推送。你还可以向公众号投稿,将自己总结的技术心得分享给大家。
目录
相关文章推荐
复利大王  ·  国产美女的热舞 ·  2 天前  
复利大王  ·  J小姐,死于话多 ·  2 天前  
复利大王  ·  花旗中国区总裁被裁了 ·  2 天前  
51好读  ›  专栏  ›  郭霖

Android:NestedScrolling机制

郭霖  · 公众号  · android  · 2017-02-14 08:00

正文

请到「今天看啥」查看全文


如今,NestedScrolling机制(可以称为嵌套滚动或嵌套滑动)在各种app中的应用已经十分广泛了,下图是“饿了么”中的一个例子:

当向上滚动列表时,列表的 父view (整个白色部分)会跟着一起向上滑动,当顶部的 banner 收缩到只剩标题栏时,则列表的 父view 保持固定,而列表继续滚动;当向下滚动列表时,则是相反的过程。

这种效果其实也可以通过 CoordinatorLayout 结合 Behavior 来实现,但阅读源码就会发现,CoordinatorLayout 本身是一个 NestedScrollingParent,此外,要实现这种效果还要求可滚动的列表是一个 NestedScrollingChild,也就是说,通过 CoordinatorLayout 结合 Behavior 来实现这种效果,其内部原理也是 NestedScrolling。

概述

NestedScrolling机制 能够让 父view 和 子view 在滚动时进行配合,其基本流程如下:

1. 当 子view 开始滚动之前,可以通知 父view,让其先于自己进行滚动;

2. 子view 自己进行滚动

3. 子view 滚动之后,还可以通知 父view 继续滚动

要实现这样的交互,父View 需要实现 NestedScrollingParent接口,而 子View 需要实现NestedScrollingChild接口。

在这套交互机制中,child 是动作的发起者,parent 只是接受回调并作出响应。

另外: 父view 和 子view 并不需要是直接的父子关系 ,即如果 "parent1 包含 parent2,parent2 包含child”,则 parent1 和child 仍能通过 NestedScrolling机制 进行交互。

接口和类

//






请到「今天看啥」查看全文