对于帧动画的显示有多种不同的实现方式,帧动画的图片有两种不同的情形,一种是多个单张图片,放在animation-list对应的xml里面,采用轮播的方式进行;另一种是一张大图片排列不同的小图片,之前实现的方式是采用继承SurfaceView,另开线程,逐步分割图片显示,同样也是轮播的方式实现动画,现在我们综合以上两种实现方式,自定义自己实现一张大图的帧动画播放(ps:有时候为了便于维护,需要一张大图实现的帧动画,而不是多张小图片)
图片资源如下:
播放简单可爱的图片来展示效果;
关键代码,自定义的ImageView:
package com.example.animationtest;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
/**
* 自定义ImageView
* @author xutao
*
*/
public class AnimationControl extends ImageView{
private Bitmap resourceBip; //播放的图片资源
private int duration; //时间间隔
private boolean positive; //正向还是反向播放
private int repeatCount; //重复播放的次数;0、循环
private int playAfter; //播放之后的动作
private MyAnimationDrawable animationDrawable; //播放的资源集合
public AnimationControl(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.animationView);
int resId = array.getResourceId(R.styleable.animationView_img, 0);
resourceBip = BitmapFactory.decodeResource(context.getResources(), resId);
duration = array.getInt(R.styleable.animationView_duration, 500);
positive = array.getBoolean(R.styleable.animationView_positive, tru