今回も引き続きViewについて記載します。
画像を動かせるようになったので、
そろそろお待ちかねのタッチイベントです。
まずはソースです。
onTouchEventをオーバーライドしています。
ついでにinvalidateをonDrawで呼ばなくしています。
見ての通りですが、画面をタッチするとonTouchEventが呼ばれます。
*タッチ状態で指を移動とかタッチをやめたでも呼ばれます。
今回はタッチされた場所に画像を表示したかったので、
ACTION_DOWNでのみ処理をするようにしています。
と、見せかけてソースが悪いです。
タッチ位置取得のgetXとgetYもifの中に入れるべきですね。
サンプルソースのままだと
・タップされた時
・指を離された時
・タップしながら指が動いた時
などで位置を取得
タップされた場合は画面を更新(描画)って作りです。
実際にタップした時の画像は以下
もういい感じのゲームが作れそうですね。




画像を動かせるようになったので、
そろそろお待ちかねのタッチイベントです。
まずはソースです。
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の中に入れるべきですね。
サンプルソースのままだと
・タップされた時
・指を離された時
・タップしながら指が動いた時
などで位置を取得
タップされた場合は画面を更新(描画)って作りです。
実際にタップした時の画像は以下
もういい感じのゲームが作れそうですね。
