话不多说先看效果:
实录效果视频如下
滚动居中 RecyclerView
在原有的RecyclerView 基础上操作,其他步骤不变,只是替换一下 manager 步骤
- 导入依赖
maven { url 'https://www.jitpack.io' }
//无限滚动
implementation 'com.github.ZhaoChanghu:GalleryLayoutManager:1.1.0'
- 使用
//设置为横向,反向的反之
GalleryLayoutManager manager = new GalleryLayoutManager(RecyclerView.HORIZONTAL);
//your_recyclerView 你的RecyclerView 控件,进行绑定
manager.attach(your_recyclerView);
//设置滑动缩放效果 Transformer 你可以自定义或者使用我下面贴出的
manager.setItemTransformer(new Transformer());
//设置适配器,和以前的写法一样 你的适配器 your_Adapter
your_recyclerView.setAdapter(your_Adapter);
//滚动回调
manager.setOnItemSelectedListener(new GalleryLayoutManager.OnItemSelectedListener() {
@Override
public void onItemSelected(RecyclerView recyclerView,ArrayList<View> list, View item, int position) {
//参数 list-你的recyclerView 所有的条目View
//参数 item-当前选中的条目view
//参数 position-当前选择的下标
//以下逻辑是上面图片和视频的处理方式
//1.首先遍历所有的条目view ,并全部设置为未选中背景
for (View v: list){
TextView mTxt = v.findViewById(R.id.tv_txt);
mTxt.setBackground(ContextCompat.getDrawable(getApplicationContext(),R.drawable.bg_ffffff_t1));
}
//2.通过当前选中的条目去查找里面的控件
TextView mTxt = item.findViewById(R.id.tv_txt);
//3.给查找到的控件设置不同的背景,或者其他操作
mTxt.setBackground(ContextCompat.getDrawable(getApplicationContext(),R.mipmap.icon_select));
}
});
Transformer
//滑动过程中的缩放
public class Transformer implements GalleryLayoutManager.ItemTransformer {
@Override
public void transformItem(GalleryLayoutManager layoutManager, View item, float fraction) {
//以圆心进行缩放
item.setPivotX(item.getWidth() / 2.0f);
item.setPivotY(item.getHeight() / 2.0f);
float scale = 1 - 0.3f * Math.abs(fraction);
item.setScaleX(scale);
item.setScaleY(scale);
}
}