1、动画图片
将4张连续的动画图片分别取名为img_a0...img_a3,然后拷贝到项目的res-drawable中
2、MainActivity.java类
包
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Canvas;
类的实现
public class MainActivity extends Activity {
private final static int ANIM_COUNT = 4; // 总共的图片数
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new FrameView(this));
}
<span style="white-space:pre"> </span>//<span style="white-space:pre"> </span>自定义View
class FrameView extends View {
Bitmap[]bitmap = new Bitmap[ANIM_COUNT];
Bitmap bitmapDisplay = null;
Paint paint = null;
long startTime = 0;
int nPlayId = 0;
// 构造函数
public FrameView (Context context) {
super(context);
// 加载图片
for(int i = 0; i < ANIM_COUNT; i++) {
bitmap[i] = BitmapFactory.decodeResource(this.getResources(), R.drawable.img_a0+i);
}
bitmapDisplay = bitmap[0];
paint = new Paint();
startTime = System.currentTimeMillis();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.BLACK);
paint.setColor(Color.WHITE);
paint.setTextSize(18);
canvas.drawText("动画播放中...", 80, 30, paint);
// 500毫秒换一次图
long nowTime = System.currentTimeMillis();
if (nowTime-startTime > 500) {
startTime = nowTime;
nPlayId++;
if (nPlayId >= ANIM_COUNT) {
nPlayId = 0;
}
bitmapDisplay = bitmap[nPlayId];
}
// 显示图片
canvas.drawBitmap(bitmapDisplay, 80, 80, paint);
invalidate();
}
}
}
3、效果图