rwyrwy123 / GalleryLayoutManagerX

GalleryLayoutManager used on AndroidX

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GalleryLayoutManagerX - 画廊布局管理器

JitPack MinSdk

GalleryLayoutManager是为轮播控件设计的支持无限循环滑动的画廊布局管理器,支持ItemDecoration定制装饰样式。

注意

这是AndroidX版本,后续的维护更新将主要以此项目为中心,旧版本项目请查看。由于JCenter即将关闭,遂重新发布到JitpackIO。旧版本仍会修复少量BUG

特点

  • Android X专用,采用Kotlin编写
  • 无限循环
  • 自动补充重复Item以满足无限循环
  • 支持仿ViewPager选中效果
  • 支持按比例缩放Item和透明度变化
  • 支持完全自定义Item变化(ViewTransformListener)

效果预览

效果预览

DEMO

克隆此项目运行,或下载demo-apk

使用方法

rootbuild.gradle中添加:

allprojects {
    repositories {
        //...
        maven { url 'https://jitpack.io' }//引用Jitpack IO仓库
    }
}

appbuild.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

viewTransformListener = SimpleViewTransformListener(1.2f, 1.2f)

库中已经提供基础的缩放实现类SimpleViewTransformListener,可满足基本需求,如需定制可自行实现ViewTransformListener

SnapHelper与选中Item

调用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方法在滚动时回调,返回当前所处的位置,参数的fromPositiontoPosition都是在适配器中的位置,即Adapter Position

About

GalleryLayoutManager used on AndroidX

License:Apache License 2.0


Languages

Language:Kotlin 98.5%Language:Java 1.5%