android密集架移动动画效果开发

机缘

因公司需要开发密集架相关项目,涉及相关项目需求设计,市场上并未有相关动画效果流出,基于设计开发相关需求

多列密集架情况:

  1. 密集架固定列在最左侧
  2. 密集架固定列在最右侧
  3. 密集架固定列在最中间

收获

最终完成初步效果

实例展示:

android密集架移动效果


部分核心代码

  • 基于需求的复杂性 内部设计是否开启柜体动画,若不开启则直接与硬件通信
  • 密集架向左移动核心代码:
fun moveToLeft(clickedIndex: Int){if (isAnimation){if (isAir){Log.e("TAG","正在通风不可移动")Toast.makeText(this,"正在通风不可移动",Toast.LENGTH_SHORT).show()return}if (clickedIndex==fixRow){Log.e("TAG","固定列不可移动")Toast.makeText(this,"固定列不可移动",Toast.LENGTH_SHORT).show()return}isStop = falsemBinding.stopTv.text = "停止"val childCount = mBinding.llOut?.childCount ?: 0if (fixRow==0) { // 固定列在最左侧var beginIndex = -1for (i in 1 until childCount){var rowBean = allBeans[i]if (rowBean.currentX==rowBean.destX||rowBean.currentX==rowBean.middleX||rowBean.currentX!=rowBean.rawX){ //说明已经移动到位beginIndex = ibreak}}if (beginIndex==-1){Log.e("TAG","没有向右移动过不可向左移动")return}var delay: Long = 0 // 初始延迟时间cancleAllAnimation()for (i in beginIndex..clickedIndex){var view = mBinding.llOut?.getChildAt(i)var rowBean = allBeans[i]var viewx = view!!.xif (viewx==rowBean.rawX){ //说明已经移回原位continue}allAnimation[i] = ValueAnimator.ofInt(rowBean.currentX.toInt(), rowBean.rawX.toInt())allAnimation[i]?.startDelay = delayallAnimation[i]?.duration = moveTimeallAnimation[i]?.addUpdateListener { animation ->val currentValue = animation.animatedValue as Int// 更新视图的左边距,实现平移动画view?.layout(currentValue.toInt(), view.top, (currentValue + view.width).toInt(), view.bottom)// 更新当前 x 坐标rowBean.currentX = view.left.toFloat()Log.e("TAG", "固定列在最左侧 向左移动 实时更新获取当前 view 对象 x 坐标:${rowBean.currentX}    view 左边距 ${view.left}")}allAnimation[i]?.start()delay+=delayAddTime}}else if (fixRow==childCount-1){ // 固定列在最右侧var delay: Long = 0 // 初始延迟时间cancleAllAnimation()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习每日小知识】交并集 (IoU)

交并集 (IOU) 是一种性能指标,用于评估注释、分割和对象检测算法的准确性。它量化数据集中的预测边界框或分段区域与地面实况边界框或注释区域之间的重叠。 IOU 提供了预测对象与实际对象注释的对齐程度的衡量标准,从而可以评估模型准确性并微调算法以改…

睿易售前初级课程Y1.1易网络易网关-2023练习题答案

1、某家庭场景,四室一厅,业主追求高画质影视观看,拉了千兆带宽,我们可以给他推荐哪款网关? A、EG105G-P B、EG210G-P C、EG105G-P-E D、EG105GW C 2、EG205G V2中“V2”代表千兆及以上版本。 A、正确 B、错误 B 3、以下产品中哪些是无线网关?【多选题】 A、EG205GW…

中科大计网学习记录笔记(十四):多路复用与解复用 | 无连接传输:UDP

前言: 学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程 该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信…

人形机器人专题:传感器,人形机器人实现“具身感知”的关键

今天分享的是人形机器人系列深度研究报告:《人形机器人专题:传感器,人形机器人实现“具身感知”的关键》。 (报告出品方:浙商证券股份有限公司) 报告共计:44页 来源:人工智能学派…

大模型量化方法总结

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

TCP/IP 三次握手四次挥手详解,以及异常状态分析

目录 1.TCP/IP 三次握手TCP/IP 三次握手过程为什么是三次握手?半连接队列和全连接队列ISN(initial sequence number)是否是固定的吗?三次握手过程能携带数据?SYN 攻击 TCP/IP 四次挥手TCP/IP 四次挥手过程为什么是 2MSL 时间才进入到 close 状…

Redis篇----第十篇

系列文章目录 文章目录 系列文章目录前言一、Redis 集群如何选择数据库?二、怎么测试 Redis 的连通性?三、怎么理解 Redis 事务?四、Redis 事务相关的命令有哪几个?五、Redis key 的过期时间和永久有效分别怎么设置?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易…

备考2025年AMC8数学竞赛:2000-2024年AMC8真题练一练

对于想了解或者加AMC8美国数学竞赛的孩子来说,熟悉AMC8的历年考试真题,既可以了解考试的内容、形式、难度,还可以看看自己的掌握程度,发现自己的短板查漏补缺,毕竟,这个比赛考察的知识点相对固定&#xff0…

14. rk3588自带的RKNNLite检测yolo模型(python)

首先将文件夹~/rknpu2/runtime/RK3588/Linux/librknn_api/aarch64/下的文件librknnrt.so复制到文件夹/usr/lib/下(该文件夹下原有的文件librknnrt.so是用来测试resnet50模型的,所以要替换成yolo模型的librknnrt.so),如下图所示&am…

【Python爬虫】requests库get和post方法使用

requests库是一个常用于http请求的模块,性质是和urllib,urllib2是一样的,作用就是向指定目标网站的后台服务器发起请求,并接收服务器返回的响应内容。 1. 安装requests库 使用pip install requests安装 如果再使用pip安装python…

数据结构——时间复杂度

前言: 当谈到数据结构和算法时,时间复杂度是一个至关重要的概念。时间复杂度是衡量算法执行时间随输入规模增长而变化的度量,它指示了算法的效率和性能。在本篇博客中,我们将深入探讨时间复杂度的相关知识,并结合C语言…

kali linux出现添加源无法更新的问题:更新时显示签名无效和没有数字签名

kali linux更新源时显示签名无效和没有数字签名 一、出现显示签名无效和没有数字签名二、 解决办法三、几种开源镜像站 一、出现显示签名无效和没有数字签名 原因:因为没有下载签名,所以显示签名无效和没有数字签名 二、 解决办法 wget archive.kali.o…

OpenCV边缘检测与视频读写

原理 OpenCV中的边缘检测原理主要基于图像梯度的计算,包括一阶梯度和二阶梯度。 一阶梯度:它反映了图像亮度变化的速度。Sobel算法就是一种以一阶梯度为基础的边缘检测算法。它通过计算图像在水平和垂直方向上的梯度来检测边缘。这种方法简单有效&…

mysql connect unblock with mysqladmin flush-hosts

原因 同一个ip在短时间内产生太多(超过max_connect_errors的最大值)中断的数据库连接而导致的阻塞。 查看 max_connect_errors show variables like max_connect_errors; 解决 前提:需要换一个IP地址连接 方法一 增大 max_connect_err…

命令行窗口文本复制到 Word 格式保持不变

命令行窗口文本复制到 Word 格式保持不变 References 标题栏右键 -> 编辑 -> 标记 / 全选 标题栏右键 -> 编辑 -> 复制 粘贴到 Notepad 中,语言栏设置对应语言,格式可以保持不变 复制文本粘贴到 Excel 中 选中 Excel 中文本复制&#xf…

基于qt的图书管理系统----01数据库设计

参考b站:视频连接 目录 1、数据库设计2、数据库增删改查2.1 book表操作2.2 user表操作2.3 record表的操作(重点) 3、数据表导出 1、数据库设计 使用sqlite3,新建一个book的表,并且都让主键自增 NmaeValuebookid书本…

编程笔记 Golang基础 010 常量和变量

编程笔记 Golang基础 010 常量和变量 一、常量二、变量小结 在 Go 语言中,常量(Constant)是一个固定的值,在程序运行期间不可被修改。它们通常用来表示那些在整个程序执行过程中不会变化的数值或其他类型的数据。在 Go 语言中&…

GIN框架介绍以及使用

Gin是一个用Go语言编写的web框架。它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍。 如果你是性能和高效的追求者, 你会爱上Gin,而且现在大多数企业都在使用Gin框架,反正学一学总没有错。 1、 GIn框…

赞:java使用easy-excel导入数据的通用模板思路

我们在项目中都会有导入导出的功能&#xff0c;这篇文章主要是讲导出的&#xff0c;导入我会在另外一篇博客文章中讲解。 现在我们开始。 首先&#xff1a;需要在项目中的pom.xml中导入easy-excel的依赖 <!--使用esay-excel进行导入导出 --> <dependency> &…

实习日志26 捷通打印机交接

概要 捷通打印机的研究和使用需要下载一些软件 打印机驱动下载说明 驱动&#xff1a;选择DL-721Z 端口选择&#xff1a;USB002 智能助手&#xff1a;&#xff08;连接&#xff0c;设置打印机&#xff09; 打印机显示 rfid未校准 时可以在这里点RFID标签校验 LabelEditor编译…