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

话不多说先看效果:

请添加图片描述
实录效果视频如下

滚动居中 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<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);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/500552.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

爬虫(Web Crawler)逆向技术探索

实战案例分析 为了更好地理解爬虫逆向的实际应用&#xff0c;我们以一个具体的案例进行分析。 案例背景 假设我们需要从某电商网站上获取商品价格信息&#xff0c;但该网站采取了反爬虫措施&#xff0c;包括动态Token和用户行为分析等。 分析与挑战 动态Token&#xff1a;…

github拉取的项目添加至自己的仓库

想把GitHub的开源项目拉到本地进行二开&#xff0c;研究了一下上传到gitee的步骤&#xff1a; 步骤 gitee新建仓库&#xff0c;仓库名与本地文件夹的名称一致&#xff0c;建好后gitee的页面也会有显示git命令 打开项目目录&#xff0c;右键打开git bash&#xff08;或者在git…

数据增强项目 | 用于目标检测的训练数据增强

项目应用场景 面向增强目标检测训练数据集&#xff0c;采用 Horizontal Flipping、Scaling、Translation、Rotation、Shearing、Resizing 等方法进行数据集的增强和丰富&#xff0c;能够提高目标检测算法的鲁棒性 项目效果&#xff1a; 项目细节 > 具体参见项目 README.md …

图论-二分图

一、二分图判定 1.1 二分图概念及应用 1.概念 二分图的顶点集可分割为两个互不相交的子集&#xff0c;图中每条边依附的两个顶点都分属于这两个子集&#xff0c;且两个子集内的顶点不相邻。 给你一幅「图」&#xff0c;请你用两种颜色将图中的所有顶点着色&#xff0c;且使得…

Linux多进程开发1 - 进程概述

一、并行和并发 并行 & 并发&#xff1a;有一个例子可以清晰地解释这二位的区别。如果将处理器(CPU)比作咖啡机&#xff0c;指令比作排队买咖啡的客人&#xff0c;则&#xff1a; 并发是两个队列交替使用同一台咖啡机&#xff1b;并行是两个队列同时使用两台咖啡机 二、进…

vue 窗口内容滚动到底部

onMounted(() > {scrollToBottom() }) // 滚动到底部方法 const scrollToBottom () > {// 获取聊天窗口容器let chatRoom: any document.querySelector(".chat-content");// 滚动到容器底部chatRoom.scrollTop chatRoom.scrollHeight; } 效果 聊天窗口代码…

深入理解数据结构第一弹——二叉树(1)——堆

前言&#xff1a; 在前面我们已经学习了数据结构的基础操作&#xff1a;顺序表和链表及其相关内容&#xff0c;今天我们来学一点有些难度的知识——数据结构中的二叉树&#xff0c;今天我们先来学习二叉树中堆的知识&#xff0c;这部分内容还是非常有意思的&#xff0c;下面我们…

常见的Nginx+Redis+MQ+DB架构设计

三高&#xff0c;复杂的架构 SQRS CAP 缓存&#xff0c;限流 【Redis&#xff0c;缓存】 cache-aside 缓存cache&#xff1a;数据源的副本 store 1. Read/Write Through Pattern 读写穿透模式 redis&#xff1a;放当前在线用户&#xff0c;热点数据

Codeforces Round 937 (Div. 4)(A,B,C,D,E,F,G)

比赛链接 这场简单&#xff08;话说div4好少啊&#xff0c;打了二十多把了就两把div4&#xff09;。D直接暴力就可以&#xff0c;E是暴力&#xff0c;F考察了树的性质&#xff0c;根据性质算数就行了&#xff0c;G是个状压。 A. Stair, Peak, or Neither? 题意&#xff1a; …

Github 2024-03-29 Java开源项目日报 Top9

根据Github Trendings的统计,今日(2024-03-29统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9JavaGuide - Java 程序员学习和面试指南 创建周期:2118 天开发语言:Java协议类型:Apache License 2.0Star数量:140773 个Fork数量:…

HarmonyOS 应用开发之线程模型

Stage模型下的线程主要有如下三类&#xff1a; 主线程 执行UI绘制。管理主线程的ArkTS引擎实例&#xff0c;使多个UIAbility组件能够运行在其之上。管理其他线程的ArkTS引擎实例&#xff0c;例如使用TaskPool&#xff08;任务池&#xff09;创建任务或取消任务、启动和终止Wor…

【Django学习笔记(二)】CSS语言介绍

CSS语言介绍 前言正文1、CSS 快速了解2、CSS 应用方式2.1 在标签上应用2.2 在head标签中写style标签2.3 写到文件中 3、问题探讨&#xff1a;用Flask框架开发不方便4、选择器4.1 ID选择器4.2 类选择器4.3 标签选择器4.4 属性选择器4.5 后代选择器4.6 注意事项 5、样式5.1 高度和…

Spring Transaction 指定事务管理器问题

一&#xff0c;单个数据源&#xff0c;单个事务管理器与Transactional默认事务管理器名称不一致问题 在平时代码中使用声明性事务时&#xff0c;直接在方法上面加注解即可&#xff0c;如下 Transactional(rollbackFor Exception.class) 并没有指定事务管理器&#xff0c;为…

Flink学习(一)-flink 本地部署

1&#xff0c;安装 jdk 官网推荐 jdk11 版本。我用 17也可以跑起来 2&#xff0c;下载 flink-1.19 的版本并解压 下载 release 1.19.0 并解压。 tar -xzf flink-1.19.0-bin-scala_2.12.tgz cd flink-1.19.0 3&#xff0c;启动 ./bin/start-cluster.sh 4&#xff0c;访问…

主干网络篇 | YOLOv8更换主干网络之EfficientNet

前言:Hello大家好,我是小哥谈。EfficientNet是一种高效的卷积神经网络架构,由Mingxing Tan和Quoc V. Le在2019年提出,其设计思想是在不增加计算复杂度的情况下提高模型的准确性。它引入了一个称为"复合系数"的概念,该系数用于同时缩放网络的深度、宽度和分辨率。…

Web开发-Django学习笔记

客户端如何获取服务端的数据信息&#xff1f; 通常 是 HTTP网络协议&#xff0c;通过网络传输数据信息。 客户端通过HTTP协议发送请求信息给服务端&#xff0c;并从服务端接收响应信息。 Web 前端开发&#xff1a; &#xff08;HTML、CSS、JS&#xff09;文件部署在后端服务…

mysql5.7 源码分析--初始化

集中在sql\mysqld.cc文件的mysqld_main函数中&#xff08;&#xff09;&#xff1a; 主程序入口 在sql\main.cc文件中&#xff1a; int main(int argc, char **argv) {return mysqld_main(arg, argv); } 一、mysql为了跨平台&#xff0c;对win32系统做了单独的初始化&#x…

常见手撕项目C++

常见手撕项目C 设计模式单例模式饿汉模式懒汉模式 策略模式策略接口实现具体的策略&#xff08;虚函数重写&#xff09;定义上下文用户调用 设计模式 单例模式 单例模式是一种常用的软件设计模式&#xff0c;其目的是确保一个类只有一个实例&#xff0c;并提供一个全局访问点来…

Modbus转Profinet网关快速解决PLC插槽数量不够用的烦恼

通过Modbus转Profinet&#xff08;XD-MDPN100&#xff09;网关的应用&#xff0c;不仅可以实现Modbus设备与Profinet网络的平滑对接&#xff0c;还能有效解决PLC插槽限制和Modbus指令轮询等问题&#xff0c;Modbus转Profinet网关&#xff08;XD-MDPN100&#xff09;在解决PLC插…

Linux多进程开发2 - 孤儿、僵尸进程

参考学习&#xff1a;彻底搞懂孤儿/僵尸/守护进程 一、孤儿进程(Orphan Process) 父进程运行结束&#xff0c;但子进程还在运行&#xff0c;这样的子进程就称为孤儿进程每当出现一个孤儿进程的时候&#xff0c;内核就把孤儿进程的父进程设置为 init (即养父)Init 会等待被收养…