カスタム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を入れます.