2011年5月1日日曜日

タッチイベントで文字を書いたり絵を描く

タッチイベントを使って、画面を指でなぞったら字が書けたり絵が描けたりする。

SurfaceViewを使って作ってみる。

内容は、画面をなぞったら描画できるだけに限定し、他の設定は行わない。
(他の設定:保存したら画面に描画した物を消したりする)

まず、座標の位置を保管する方法を考える。

座標の位置を保管する物を作る。
使用するのは、ArrayList。

JavaのArrayList<E>クラスは、サイズが拡張可能な配列型データ構造

ArrayListの使い方
ArrayListクラスは大きさが決まっていない配列。
ArrayListを使うには、まずArraListクラスのオブジェクトを作成する。
デフォルトは初期容量 10 で空のリストを作成。
大きさは変更可能、サイズは足りなくなれば自動的に拡張される。

J2SE5.0以降は下記のように作成
ArrayList<型> 変数名 = new ArrayList<型>();
クラスの後ろに"<"と">"に囲まれて型を指定する部分がある。
この記述方法は、J2SE5.0から新しく導入されたGenerics機能と呼ばれるもの。

画面にタッチしたら、タッチしたポイントに描画する為にもう1つ必要なことがある。
タッチした座標値をこのArrayListを使って、どのように設定するか。

設定方法
①タッチした座標値を取得する
使う物はPointクラス。
最初、event.getX()とevent.getY()で得た座標値をxとyの変数に代入
x=event.getX()
y=event.getY()

そして、このxとyをPointの引数に入れる。
Point point=new Point(x,y);

②ArrayListを作る
インスタンスの作成
ArrayList<Point> draw=new ArrayList<Point>();
タッチイベントで、Pointを作った所でadd()メソッドを呼び出し、登録する
draw.add(point)

③描画処理
描画処理内にてfor()文を使用し、繰り返し処理を行う。
for(int i=0;i<draw;i++) {
ここでも、Pointクラスを呼び出す。
ArrayListに登録されている座標値を引っ張り出す支持を設定する。
引っ張り出すメソッドはget()メソッド。

こんな感じに記述
Point point=draw.get(i);

後は、描画する図形のメソッドの引数にて使用する。
canvas.drawCircle(point.x, point.y, r, paint);
}

JavaTM PlatformStandard Ed. 6 クラス:ArrayList<E>
Android Reference ArrayList<E>




その他のタッチイベント関連
タッチイベントを使って、画像を回転させる
ランダムクラスを使って色の変更を行う
Androidのタッチイベントを使ってアニメーションを動作させる

0 件のコメント:

コメントを投稿