创建一个AnimationDrawable对象来表示Frame动画,然后通过addFrame方法把每一帧要显示的内容添加进去,最后通过start方法就可以播放这个动画了。
同时还可以通过setOneShot方法来设置是否重复播放。
public class GameView extends View
{
//定义AnimationDrawable动画
private AnimationDrawable frameAnimation = null;
Context mContext = null;
//定义一个drawable对象
Drawable mBitAnimation = null;
public GameView(Context context)
{
super(context);
mContext = context;
//实例化AnimationDrawable对象
frameAnimation = new AnimationDrawable();
//装载资源,这里用一个循环装载所有名字类似的资源,如a1....15.jpg的图片
for(int i = 1; i <= 15; i++)
{
int id = getResources().getIdentifier("a" + i, "drawable",mContext.getPackageName());
mBitAnimation= getResources().getDrawable(id);
//为动画添加1帧,参数mBitAnimation是该帧的图片,该帧显示的时间,按毫秒计算
frameAnimation.addFrame(mBitAnimation,500);
}
//设置播放模式是否循环
frameAnimation.setOneShot(false);
//设置本类将要显示这个动画
this.setBackgroundDrawable(frameAnimation);
}
public void onDraw(Canvas canvas)
{
super.onDraw(canvas);
//开始播放动画
frameAnimation.start();
}
}
activity.java:
public class Activity01 extends AppCompatActivity
{
private GameView mGameView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//实例化GameView对象
this.mGameView = new GameView(this);
//设置显示为我们自定义的View(GameView)
setContentView(mGameView);
}
}
其实还可以通过xml布局文件来实现Frame动画。