android让帧动画回到第一帧,Android 帧动画(Frame Animation) 动画停止在第一帧

项目中遇到的问题:

需求: 做一个聊天页面,要求播放语音时,有一个类似于喇叭的动画,从小到大不停循环,语音播放完,动画停止在第一帧。当点击正在播放的语音时,语音停止,动画回复到第一帧(回复到第一帧是难点)

实现:用Frame Animation

可以在Java代码中添加每一帧的动画,也可以创建动画布局,我用的是创建动画布局。

1.创建动画布局,在drawable文件夹下创建布局imv_anim_bg.xml(名字自己定义):

android:oneshot="false">

解释一下:android:oneshot="false"     false:循环播放动画,   true:  只播放一次

2.在布局中添加ImageView控件,设置其背景为上述动画。

3.在java代码中实现动画的播放,停止,回复第一帧:

获得动画实例;

anim = (AnimationDrawable) imv.getBackground(); // anim 为AnimationDrawable对象,imv为ImageView对象,就是要实现动画效果的ImageView     获取动画实例后就可以实现动画播放,停止等操作

动画播放:

anim.start();     动画停止:

anim.stop(); // stop方法实际上只是动画的暂停方法,当调用此方法时,动画会停止到当前正在播放的那一帧,并不会停止到第一帧,当在此方法之后调用start()方法,会继续下一帧播放

动画恢复到第一帧动画:

anim.selectDrawable(0); //选择当前动画的第一帧,然后停止

anim.stop();

讨论:

动画恢复到第一帧:

在项目是现实时,刚开始用的方法是anim.setVisible(true,true);  查看文档发现,setVisible方法的第二个参数是reset,因此设置其为true,目的是实现anim的重置,此方法可用,但是在之后的测试中发现在Lenovo等手机中,系统并不支持此方法。

在之后的调查中发现上述返回第一帧的方法,目前没有发现不支持此方法的手机

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值