android 控制帧动画停止时,停在第一帧

来源:互联网 发布:kindle推送软件 编辑:程序博客网 时间:2024/06/05 23:07

本文转自:http://blog.csdn.net/minyou_1314/article/details/25230165

前言:貌似从android studio2.0以后,帧动画不允许放在anim文件夹下,会报错,必须放在drawable文件夹下

实现:用Frame Animation

可以在Java代码中添加每一帧的动画,也可以创建动画布局,我用的是创建动画布局。
1.创建动画布局,在drawable文件夹下创建布局imv_anim_bg.xml(名字自己定义):

<?xml version="1.0" encoding="UTF-8"?><!--Specify the animation looping--><animation-list xmlns:android="http://schemas.android.com/apk/res/android"    android:oneshot="false">    <!--Add anim frames-->    <item android:drawable="@mipmap/ic_diagnosis_e4" android:duration="500"/>    <item android:drawable="@mipmap/ic_diagnosis_e4_null" android:duration="500"/></animation-list>  

解释一下: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等手机中,系统并不支持此方法。

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

原创粉丝点击