11

タッチパネルを使ってみる

Eclipseのインストールの概要

1.今回のAndroidアプリ開発は

今回は、前回Androidアプリを改造して、タッチした場所に画像が移動するAndroidアプリを開発します。

2.プロジェクトを作る

前回のプロジェクトを再利用することにします。

3.画像を準備する

前回の画像を再利用することにします。( back.png / image.png )

4.Activityプログラミング

Start.java の方は、前回のままでOKです。

5.Viewプログラミング

Screen.javaの方を、次のように変更します。

■ソースコード

package my.start;

import android.content.Context;
import android.content.res.Resources;
import android.view.MotionEvent;
import android.view.View;
import android.graphics.*;

public class Screen extends View {
	float x, y;
	Paint p = new Paint();
	Bitmap img0, img1;
	
	public Screen(Context context) {
		super(context);
		Resources res = this.getContext().getResources();
		img0 = BitmapFactory.decodeResource(res, R.drawable.back);
		img1 = BitmapFactory.decodeResource(res, R.drawable.image);
	}
	
	public boolean onTouchEvent(MotionEvent ev) {
		if(ev.getAction() == MotionEvent.ACTION_DOWN) {
			x = ev.getX();
			y = ev.getY();
			Screen.this.invalidate();
		}
		return true;
	}
	
	@Override
	protected void onDraw(Canvas c) {
		super.onDraw(c);
		
		c.drawBitmap(img0,0,0,p);
		c.drawBitmap(img1,x,y,p);
	}
}

■ちょっと解説
今回のメインは「 onTouchEvent 」の中身です。この中身は、タッチパネルに指が当たったときや、離れたときなどに1回実行されます。

	if(ev.getAction() == MotionEvent.ACTION_DOWN) {
		x = ev.getX();
		y = ev.getY();
		Screen.this.invalidate();
	}
	return true;

それぞれは、次のような働きがあります。

□if(ev.getAction() == MotionEvent.ACTION_DOWN) {}
もし、タッチパネルに指が当たったときなら{・・・}を実行する

□x = ev.getX();
タッチされたX座標を xに代入する

□y = ev.getY();
タッチされたY座標を yに代入する

□Screen.this.invalidate();
もう1回 onDrawを実行する

今回は、onDrawが何回も実行されます。でも、画像の読み込みは、最初に1回だけ実行されて欲しいです。そこで、public Screen(Context context)の中に書きます。

	super(context);
	Resources res = this.getContext().getResources();
	img0 = BitmapFactory.decodeResource(res, R.drawable.back);
	img1 = BitmapFactory.decodeResource(res, R.drawable.image);

6.実行してみる

実行してみましょう。エミュレータの場合は、画面をクリックして、imageの場所が変わったら成功です。

android app 1 android app 2 android app 3

7.次回のAndroidアプリ開発は

今回は、タッチパネルが使えるようになりました。これで、「初心者のためのAndroidアプリ開発」を終わります。最低限の命令は使えるようになったと思います。アイデアの力で面白いアプリを作ってみてください。