本文转自http://blog.csdn.net/minyou_1314/article/details/25230165
项目中遇到的问题:
需求: 做一个聊天页面,要求播放语音时,有一个类似于喇叭的动画,从小到大不停循环,语音播放完,动画停止在第一帧。当点击正在播放的语音时,语音停止,动画回复到第一帧(回复到第一帧是难点)
实现:用Frame Animation
可以在Java代码中添加每一帧的动画,也可以创建动画布局,我用的是创建动画布局。
1.创建动画布局,在drawable文件夹下创建布局imv_anim_bg.xml(名字自己定义):
解释一下:android:oneshot="false" false:循环播放动画, true: 只播放一次
2.在布局中添加ImageView控件,设置其背景为上述动画。
3.在java代码中实现动画的播放,停止,回复第一帧:
获得动画实例;
获取动画实例后就可以实现动画播放,停止等操作
动画播放:
动画停止:
动画恢复到第一帧动画:
讨论:
动画恢复到第一帧:
在项目是现实时,刚开始用的方法是anim.setVisible(true,true); 查看文档发现,setVisible方法的第二个参数是reset,因此设置其为true,目的是实现anim的重置,此方法可用,但是在之后的测试中发现在Lenovo等手机中,系统并不支持此方法。
在之后的调查中发现上述返回第一帧的方法,目前没有发现不支持此方法的手机