逐帧动画
1.作用对象
安卓视图控件(view)
2.效果
将一组定义好的图片进行一帧一帧的播放,每一张图片即为一帧
3.具体使用
使用方式分为两种,一种是在res/drawable/
文件目录下创建xml文件,其中使用的标签为animation-list
,另一种方式为在代码中动态设置。
使用介绍
在使用逐帧动画时,要预先准备好一组图片放进drawable文件夹内
3.1 xml方式
首先创建xml文件,并设置图片资源,详细介绍请看代码
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false"> <!--设置是否只播放一次,默认为false-->
<!--item 动画资源, duration 设置一帧持续时间-->
<item android:drawable="@drawable/img0" android:duration="50"/>
<item android:drawable="@drawable/img1" android:duration="50"/>
<item android:drawable="@drawable/img2" android:duration="50"/>
<item android:drawable="@drawable/img3" android:duration="50"/>
<item android:drawable="@drawable/img4" android:duration="50"/>
<item android:drawable="@drawable/img5" android:duration="50"/>
<item android:drawable="@drawable/img6" android:duration="50"/>
<item android:drawable="@drawable/img7" android:duration="50"/>
<item android:drawable="@drawable/img8" android:duration="50"/>
<item android:drawable="@drawable/img9" android:duration="50"/>
<item android:drawable="@drawable/img10" android:duration="50"/>
<item android:drawable="@drawable/img11" android:duration="50"/>
<item android:drawable="@drawable/img12" android:duration="50"/>
<item android:drawable="@drawable/img13" android:duration="50"/>
<item android:drawable="@drawable/img14" android:duration="50"/>
<item android:drawable="@drawable/img15" android:duration="50"/>
<item android:drawable="@drawable/img16" android:duration="50"/>
<item android:drawable="@drawable/img17" android:duration="50"/>
<item android:drawable="@drawable/img18" android:duration="50"/>
<item android:drawable="@drawable/img19" android:duration="50"/>
<item android:drawable="@drawable/img20" android:duration="50"/>
<item android:drawable="@drawable/img21" android:duration="50"/>
<item android:drawable="@drawable/img22" android:duration="50"/>
<item android:drawable="@drawable/img23" android:duration="50"/>
<item android:drawable="@drawable/img24" android:duration="50"/>
</animation-list>
接着在Activity中进行加载动画,首先定义图片加载对象,和动画对象
private ImageView imageView;
private AnimationDrawable animationDrawable;
然后接着是对其进行赋值,最后进行启动动画或者暂停动画
public void StartFrame(View view) {
//设置动画
imageView.setImageResource(R.drawable.frame_animation);
//获取动画对象
animationDrawable = (AnimationDrawable) imageView.getDrawable();
//启动动画
animationDrawable.start();
}
//暂停动画
public void StopFrame(View view) {
imageView.setImageResource(R.drawable.frame_animation);
animationDrawable = (AnimationDrawable) imageView.getDrawable();
animationDrawable.stop();
}
3.2代码方式
直接上代码
//获取逐帧动画的资源
private void getAnimationResource(){
animationDrawable = new AnimationDrawable();
for (int i = 0; i < 25; i++) {
int id = getResources().getIdentifier("img"+ i, "drawable", getPackageName());
Drawable drawable = getResources().getDrawable(id);
animationDrawable.addFrame(drawable, 50);
}
}
//启动逐帧动画
public void StartFrame(View view) {
//设置动画是否只播放一次,true只播放一次,false一直重复
animationDrawable.setOneShot(false);
//imageView控件获取资源对象
imageView.setImageDrawable(animationDrawable);
//start之前必须先stop,负责动画指挥停在最后一帧
animationDrawable.stop();
animationDrawable.start();
}
//暂停逐帧动画
public void StopFrame(View view) {
animationDrawable.setOneShot(true);
imageView.setImageDrawable(animationDrawable);
animationDrawable.stop();
}
以上内容皆为参考Carson_Ho大神的博客,自己看着博客进行操作过一遍,目前我也是在学习,有错误或看不懂的,请参看大神原文,附上大神原文链接