# PersistentCoordinatorLayout
**Repository Path**: liushibobo/PersistentCoordinatorLayout
## Basic Information
- **Project Name**: PersistentCoordinatorLayout
- **Description**: 京东首页 - 长列表内嵌ViewPager商品流列表(CoordinatorLayout方案)
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 1
- **Created**: 2021-01-07
- **Last Updated**: 2022-03-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# PersistentCoordinatorLayout
仿京东首页,整体是个长列表,内嵌子列表-商品feeds流(PersistentRecyclerView),且商品流可以左右滑动。
## 实现效果
点击可查看[截屏视频](http://sistone.top/capture/video.html?content=PersistentCoordinatorLayout):
## 使用方法
1. 外部的长列表容器使用PersistentCoordinatorLayout;
2. 内嵌的子列表使用PersistentRecyclerView;
CoordinatorLayout和RecyclerView的使用方法跟官方一样,ViewPager和ViewPager2可随意选用,均已内部兼容;
## 实现方案
CoordinatorLayout已经实现了NestedScrollingParent3接口,当底部商品流列表上拉或下拉时,会自动将Fling的速率传递给AppBarLayout。而AppBarLayout上拉触底时,却无法将Fling速率传递给底部的商品流RecyclerView。所以,我们只要能改造好这一点,就能让CoordinatorLayout“更像是一个长列表”。
要实现这一点并不复杂,AppBarLayout的fling是通过behavior实现的,behavior内部会维护一个OverScroller对象,OverScroller保存了我们想要的一切,包括Fling速率和滑行时间。我们只要能在正确的时间,把正确的Fling速率传递好,就能让CoordinatorLayout实现的长列表毫无违和感!
仓库中细节代码较多,此处不再赘述,感兴趣的同学可自行Review代码即知。
## 另一种方案
京东App首页的长列表,整体是通过RecyclerView实现的,我也实现了一份,感兴趣的同学可以去瞅瞅:[传送门](https://github.com/xmuSistone/PersistentRecyclerView)
## Demo下载
[点击下载](https://github.com/xmuSistone/PersistentCoordinatorLayout/blob/master/PersistentCoordinatorLayout.apk?raw=true)