画面タッチ判定
■事前準備
①.新しいプロジェクト「TouchTest」を作成する
②.HelloWorldの文字を消す
③.一度実行してエミュレータの起動を行っておく
■タッチ判定
画面がタッチされたかどうかを判定するには
Viewを設定し、そのViewがタッチされているかを判定します。
判定には「onTouchEvent」メソッドを使用します。
●詳細
関数名:
onTouchEvent
戻り値:
boolean:
Viewの下にあるViewにイベントを渡すかを返す
true:
渡す
false:
渡さない
引数:
MotionEvent
イベント情報データ
内容:
Viewがタッチされた際に呼び出される
タッチの詳細(押された瞬間、押されている)などは
引数のMotionEventにて取得が可能
●getAction
getActionでイベントの詳細を取得できます。
例:
押された瞬間 => MotionEvent.ACTION_DOWN
押されている => MotionEvent.ACTION_MOVE
離した瞬間 => MotionEvent.ACTION_UP
●getX、getY
getX、getYでViewがタッチされた座標を取得できます。
getX:
タッチした位置(X座標)
getY:
タッチした位置(Y座標)
■サンプル
public class TouchTest extends View
{
private Path mPath;
public TouchTest(Context context, AttributeSet attribute)
{
super(context, attribute);
// 線を引くためのパスを作っておく
mPath = new Path();
}
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
// 赤線の設定
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10);
// 線の描画
canvas.drawPath(mPath, paint);
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
switch (event.getAction())
{
// Viewがタップされた
case MotionEvent.ACTION_DOWN:
// タップされた位置にパスを設定
mPath.moveTo(event.getX(), event.getY());
break;
// タップされたまま移動した
case MotionEvent.ACTION_MOVE:
mPath.lineTo(event.getX(), event.getY());
break;
// タップをやめた
case MotionEvent.ACTION_UP:
mPath.lineTo(event.getX(), event.getY());
break;
}
// 更新
invalidate();
return true;
}
}