カスタムviewでのアニメーションの描画


package zy.qiufo;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.View;
import android.view.WindowManager;

public class QiuQianAnimationView extends View {

	private Bitmap[] m_animationPics;
	private int m_CurPic=0;
	private int m_iDevWidth = 0;
	private int m_iDevHeight = 0;
	private boolean m_bStartAnimation = false;
	private QiufoActivity m_mainActivity;
	
	public QiuQianAnimationView(Context context) {
		super(context);
		//initPic();
		// TODO Auto-generated constructor stub
	}
	
	public QiuQianAnimationView(Context context, AttributeSet attrs) {  
		super(context,attrs);
		initPic();  
		m_mainActivity = (QiufoActivity)context;
		WindowManager wm = (WindowManager) getContext()
                .getSystemService(Context.WINDOW_SERVICE);	 
		m_iDevWidth = wm.getDefaultDisplay().getWidth();
		m_iDevHeight = wm.getDefaultDisplay().getHeight();
    } 
	
	protected void initPic()
	{
		m_animationPics = new Bitmap[10];
		m_animationPics[0] = BitmapFactory.decodeResource(getResources(), R.drawable.qiuqian);
		m_animationPics[1] = BitmapFactory.decodeResource(getResources(), R.drawable.qiuqian_left_01);
		m_animationPics[2] = BitmapFactory.decodeResource(getResources(), R.drawable.qiuqian_left_02);
		m_animationPics[3] = BitmapFactory.decodeResource(getResources(), R.drawable.qiuqian_right_01);
		m_animationPics[4] = BitmapFactory.decodeResource(getResources(), R.drawable.qiuqian_right_02);
		m_animationPics[5] = BitmapFactory.decodeResource(getResources(), R.drawable.qiuqian_left_01);
		m_animationPics[6] = BitmapFactory.decodeResource(getResources(), R.drawable.qiuqian_left_02);
		m_animationPics[7] = BitmapFactory.decodeResource(getResources(), R.drawable.qiuqian_right_01);
		m_animationPics[8] = BitmapFactory.decodeResource(getResources(), R.drawable.qiuqian_right_02);
		m_animationPics[9] = BitmapFactory.decodeResource(getResources(), R.drawable.qiuqian_result);
	}
	
	@Override
	protected void onDraw(Canvas canvas)
	{
		if (m_bStartAnimation)
		{
			if (m_CurPic < 10)
			{
				int iBgX = m_iDevWidth/2 - m_animationPics[m_CurPic].getWidth()/2;
				int iBgY = m_iDevHeight/2 - m_animationPics[m_CurPic].getHeight()/2;
				canvas.drawBitmap(m_animationPics[m_CurPic],iBgX,iBgY, null);
				m_CurPic++;
				this.postInvalidateDelayed(500);
			}
			else
			{
				int iBgX = m_iDevWidth/2 - m_animationPics[9].getWidth()/2;
				int iBgY = m_iDevHeight/2 - m_animationPics[9].getHeight()/2;
				canvas.drawBitmap(m_animationPics[9],iBgX,iBgY, null);
				m_bStartAnimation = false;
			}
		}		
		else 
		{
			if(m_CurPic == 0)
			{
				int iBgX = m_iDevWidth/2 - m_animationPics[0].getWidth()/2;
				int iBgY = m_iDevHeight/2 - m_animationPics[0].getHeight()/2;
				canvas.drawBitmap(m_animationPics[0],iBgX,iBgY, null);
			}
			else
			{
				int iBgX = m_iDevWidth/2 - m_animationPics[9].getWidth()/2;
				int iBgY = m_iDevHeight/2 - m_animationPics[9].getHeight()/2;
				canvas.drawBitmap(m_animationPics[9],iBgX,iBgY, null);

			}
		}
			
	}	
	
	public void startDraw()
	{
		m_CurPic = 0;
		m_bStartAnimation = true;
		this.postInvalidate();
	}
	
	public void stopDraw()
	{
		
	}
}

上のviewクラスはpostInvalidateを利用して自身を絶えずリフレッシュし、リフレッシュ時にondraw再描画を呼び出し、再描画時に状況に応じて異なる画像を画面中央に描画し、アニメーション(フレームごとのアニメーションに類似)を形成する
Activityに上記viewを入れます.