GalleryLayoutManager是为轮播控件设计的支持无限循环滑动的画廊布局管理器,支持ItemDecoration定制装饰样式。
这是AndroidX版本,后续的维护更新将主要以此项目为中心
,旧版本项目请查看。由于JCenter即将关闭
,遂重新发布到JitpackIO。旧版本仍会修复少量BUG
- Android X专用,采用Kotlin编写
- 无限循环
- 自动补充重复Item以满足无限循环
- 支持仿ViewPager选中效果
- 支持按比例缩放Item和透明度变化
- 支持完全自定义Item变化(ViewTransformListener)
克隆此项目运行,或下载demo-apk
在root的build.gradle中添加:
allprojects {
repositories {
//...
maven { url 'https://jitpack.io' }//引用Jitpack IO仓库
}
}
在app的build.gradle中添加依赖:
implementation 'com.github.peceoqicka:GalleryLayoutManagerX:1.0.0'
你需要添加的额外的依赖库:
implementation 'com.google.android.material:material:1.1.0'
//或者
implementation 'androidx.recyclerview:recyclerview:1.2.0'
代码调用即可
bannerLayoutManager = GalleryLayoutManager.create {
itemSpace = 120
onScrollListener = mOnScrollListener
viewTransformListener = SimpleViewTransformListener(1.2f, 1.2f)
}
mRecyclerView.layoutManager = layoutManager
推荐使用GalleryLayoutManager.Builder,也可以直接使用构造方法。
//默认为BASE_POSITION_CENTER,可以不用调用
//选择BASE_POSIITON_START会将布局起始点设置为左边
basePosition = GalleryLayoutManager.BASE_POSITION_CENTER
在第一次布局的时候,将原本的第0项Item移动到可视区域正中间。
viewTransformListener = SimpleViewTransformListener(1.2f, 1.2f)
库中已经提供基础的缩放实现类SimpleViewTransformListener
,可满足基本需求,如需定制可自行实现ViewTransformListener
调用setSnapHelper
传入需要的SnapHelper,默认为GalleryLayoutManager.GallerySnapHelper
,交互效果同ViewPager
,即滑动翻页单张。如果不在这里传入将无法使用选中Item的回调:
snapHelper = LinearSnapHelper()
//snapHelper = null 在此置空将禁用选中效果,且变形和滑动回调均会失效
GalleryLayoutManager.create {
onScrollListener = object: OnScrollListener() {
@Override
public void onIdle(int snapViewPosition) {
//选中的Item的位置,在这里做通知Indicator改变选中位置等操作
}
@Override
public void onScrolling(float scrollingPercentage, int fromPosition, int toPosition) {
//滑动的监听,从当前选中位置到下一个位置的百分比变化
}
})
}
onIdle
方法在滚动停止后回调,返回当前选中的Item;onScrolling
方法在滚动时回调,返回当前所处的位置,参数的fromPosition和toPosition都是在适配器中的位置,即Adapter Position。