小工具知识网

当前位置: 首页 > 行业知识 > Android RecyclerView 滑动后选中的条目居中显示

行业知识

Android RecyclerView 滑动后选中的条目居中显示

2026-11-10 12:20:09 来源:互联网转载

话不多说先看效果:

实录效果视频如下

滚动居中 RecyclerView

在原有的RecyclerView 基础上操作,其他步骤不变,只是替换一下 manager 步骤

  1. 导入依赖
        maven { url 'https://www.jitpack.io' }
    //无限滚动    implementation 'com.github.ZhaoChanghu:GalleryLayoutManager:1.1.0'
  1. 使用
        //设置为横向,反向的反之        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 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);    }}

上一篇:ps怎么切icon?

下一篇:揭秘网络公司PHP源码,核心技术助力高效开发之路