今回も引き続き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();

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

@Override
public boolean onTouchEvent(MotionEvent event) {

this.left = event.getX();
this.top = event.getY();

if(event.getAction() == MotionEvent.ACTION_DOWN){

invalidate();
}
return false;
}
}


onTouchEventをオーバーライドしています。
ついでにinvalidateをonDrawで呼ばなくしています。

見ての通りですが、画面をタッチするとonTouchEventが呼ばれます。
*タッチ状態で指を移動とかタッチをやめたでも呼ばれます。

今回はタッチされた場所に画像を表示したかったので、
ACTION_DOWNでのみ処理をするようにしています。

と、見せかけてソースが悪いです。
タッチ位置取得のgetXとgetYもifの中に入れるべきですね。


サンプルソースのままだと
・タップされた時
・指を離された時
・タップしながら指が動いた時
などで位置を取得

タップされた場合は画面を更新(描画)って作りです。

実際にタップした時の画像は以下





もういい感じのゲームが作れそうですね。