如何实现平移动画的暂停与播放?

本文介绍了一种在移动端应用中实现暂停动画并保持与时间轴同步的方法。使用RecyclerView加载时间轴,通过自定义线程及Handler实现每3秒判断是否暂停的功能。文章详细解释了TranslateAnimation方法的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

是的,关注博主的人都知道博主最近几年出货量是越来越少了,至于原因嘛,一是本人不太喜欢抄袭别人的文章,二是大部分问题大家在网上也都可以找到,所以也不太喜欢去写那些大家都能找到的东西,这篇文章呢,主要是实现一个比较有趣的功能,效果类似IOS新的回忆模块

就类似这样的

这篇博客可以帮你解决的主要问题就是如何暂停一个动画并且继续播放,想明白了实现起来比较简单但是网上却没找到一个让我满意的答案

正文


这里主要的问题就是那个播放的时间轴怎么处理,我用的是recycleView来加载时间轴,至于为什么不用ListView相信了解过的同学都知道,ListView是不会事先绘制出所有的item的,而我们需要的是一个很长的view能动态添加我们的图片数据并且让他从屏幕的一边滚动到另一边
这里就是一个平移动画的问题,但是我们知道平移动画是没有暂停这一说的,所以为了保持时间轴与图片播放的同步,我们新建一个线程把相关问题放在handler里面解决,每3s调用一次handler并且判断是否暂停,如未暂停则继续播放,这里我们每切换一个图片就播放一帧的时间轴(向左滑动一个格),这样当我们按了暂停之后,暂停标识位置位,handler判断无效则不会播放下一帧的动画,问题就解决了(至于平移怎么做这些就不用说了吧)
这里要详细解释一下TranslateAnimation方法
/**
 * Constructor to use when building a TranslateAnimation from code
 *
 * @param fromXDelta Change in X coordinate to apply at the start of the
 *        animation
 * @param toXDelta Change in X coordinate to apply at the end of the
 *        animation
 * @param fromYDelta Change in Y coordinate to apply at the start of the
 *        animation
 * @param toYDelta Change in Y coordinate to apply at the end of the
 *        animation
 */
这是官方解释,也就是我们的动画的配置要动态改变,这将跟你的RecyclerView的index相关,第一个参数是你初始的位置,第二个是动画后的位置,index*ItemView的大小即可,代码不想贴出来了,一是因为你的需要和我的需要不一样,而是因为希望大家能从别人的博客学到知识作为己用,而不是一味的粘代码,有问题可以评论可以私聊
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值