前言
虽然在日常开发中,大伙或多或少都会接触到 RecyclerView,但通常,也就是写写 adapter,用个系统提供的 LayoutManager,写写点击事件,处理处理复杂的 item 布局。
也就是说,大部分场景下,我们其实并不会去接触到 RecyclerView 的大部分其他功能,比如自定义 LayoutManager ,自定义 Item 动画,自定义边界样式,自定义滑动效果,自定义回收策略等等之类的功能。
那么,本篇就专门来试用下这些功能,力求将 RecyclerView 支持的所有功能都试一遍,只有清楚了这个控件都支持哪些功能效果,那么分析起它的架构、原理才会有一个比较清晰的脉络。
目录
由于本篇篇幅特长,特意做了个目录,让大伙对本篇内容先有个大概的了解。
另外,由于有些平台可能不支持 `` 解析,所以建议大伙可借助本篇目录,或平台的目录索引进行快速查阅。
1.LayoutManager
1.1 LinearLayoutManager
- 基本效果介绍
- findFirstCompletelyVisibleItemPosition()
- findFirstVisibleItemPosition()
- findLastCompletelyVisibleItemPosition()
- findLastVisibleItemPosition()
- setRecycleChildrenOnDetach()
1.2 GridLayoutManager
- 基本效果介绍
- setSpanSizeLookUp()
1.3 StaggeredGridLayoutManager
- 基本效果介绍
- setFullSpan()
- findXXX() 系列方法介绍
2.ViewHolder
- getAdapterPosition()
- getLayoutPosition()
- setIsRecyclable()
3.LayoutParams
4.Adapter
- 基本用法介绍
- onViewRecycled()
- onViewAttachedFromWindow()
- onViewDetachedFromWindow()
- onAttachedToRecyclerView()
- onDetachedFromRecyclerView()
- registerAdapterDataObserver()
- unregisterAdapterDataObserver()
5.RecyclerView
- addOnItemTouchListener()
- addOnScrollListener()
- setHasFixedSize()
- setLayoutFrozen()
- setPreserveFocusAfterLayout()
- findChildViewUnder()
- findContainingItemView()
- findContainingViewHolder()
- findViewHolderXXX()
6.Recycler
- setItemViewCacheSize()
- setViewCacheExtension()
- setRecycledViewPool()
- setRecyclerListener()
7.ItemAnimator
SimpleItemAnimator
DefaultItemAnimator
8.ItemDecoration
DividerItemDecoration
ItemTouchHelper
FastScroller
9.OnFlingListener
SnapHelper
LinearSnapHelper
PagerSnapHelper