前回のViewクラスを以下のように書き換えてみました。


public class ViewSample extends View
{

private Bitmap bmp = BitmapFactory.decodeResource(super.getResources(), R.drawable.ic_launcher);
private float left = 0;
private float top = 0;

public ViewSample(Context context){

super(context);
}

@Override
public void onDraw(Canvas canvas){

Paint paint = new Paint();
int maxLeft = 800 - bmp.getWidth();
int addTopVal = bmp.getHeight();

left += 10;
if (maxLeft < left) {
left = 0;
top += addTopVal;
}

canvas.drawBitmap(bmp, left, top, paint);
invalidate();
}
}


leftとtopをクラス変数化
あとはonDrawの最後にinvalidateを呼ぶようになりました。

invalidateを呼ぶことでViewが動いている間は定期的にonDrawメソッドが呼ばれます。

なので、今回のソースで画像が左から右、上から下に移動するようになっています。

画面サンプル




サンプル見ても動かないから分かりませんね。

とは言えこのくらいのソースで画像を動かす事ができます。

勘のいい人はお気づきかもしれませんが、
ループの感覚は指定できません

もう何回かViewについて触れたら、本気なゲーム作成方法を記載します。(あと一回かもしれませんが未定)