逐帧动画的本质是让静态图片不断切换,给人视频的感觉
android可以用xml和code 实现逐帧动画
xml实现:
在drawable文件夹下新建anim_live.xml文件内部实现如下:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true">
<item android:drawable="@mipmap/z_b_5" android:duration="300" />
<item android:drawable="@mipmap/z_b_6" android:duration="300" />
<item android:drawable="@mipmap/z_b_7" android:duration="300" />
<item android:drawable="@mipmap/z_b_8" android:duration="300" />
</animation-list>
oneshot属性:动画是否重复执行
在代码中引用改xml文件
//ivAnimLive是图片控件
ivAnimLive.setImageResource(R.drawable.anim_live);
AnimationDrawable animationDrawable = (AnimationDrawable) ivAnimLive.getDrawable();
animationDrawable.start();
code实现:
1)创建AnimationDrawable
animationDrawable = new AnimationDrawable();
2)加载图片资源
for (int i = 5; i < 9; i ++ ){
int id = getResources().getIdentifier("z_b_" + i, "drawable", getPackageName());
Drawable drawable = getResources().getDrawable(id);
animationDrawable.addFrame(drawable, 100);
}
3)播放动画
ivAnimLive.setImageDrawable(animationDrawable);
animationDrawable.setOneShot(true);
animationDrawable.stop();
//注意:在动画start()之前要先stop(),不然在第一次动画之后会停在最后一帧,这样动画就只会触发一次
animationDrawable.start();