画面がタッチされた時にX座標とY座標を取得する
スマートフォンやタブレットの画面がタッチされた時にX座標とY座標を取得するには「View」クラスの「onTouchEvent」メソッドを使用します。
サンプルコード①(MainActivity.java)
詳しい説明はコード内のコメントに記述してあります。
public class MainActivity extends AppCompatActivity {
//アプリを動かすと必ず最初に実行される
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//オリジナルのViewをセット
setContentView(new TouchView(this));
}
//オリジナルのView
public class TouchView extends View {
//X、Y座標用の変数を準備
private float x_zahyou;
private float y_zahyou;
public TouchView(Context context) {
super(context);
//X、Y座標の初期化
x_zahyou = 0;
y_zahyou = 0;
}
//描画するところ
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//文字の表示スタイルを設定
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setTextSize(50);
paint.setStrokeWidth(30);
//画面に文字列などを表示する
canvas.drawText("タッチしてください",50,100, paint);
canvas.drawText("X座標:" + x_zahyou + " Y座標:" + y_zahyou,50,160, paint);
canvas.drawPoint(x_zahyou, y_zahyou, paint);
}
//画面(View)が操作されると呼び出される
@Override
public boolean onTouchEvent(MotionEvent event) {
//画面(View)が押されたのかを判定
if(event.getAction() == MotionEvent.ACTION_DOWN) {
x_zahyou = event.getX(); //X座標を変数にセット
y_zahyou = event.getY(); //Y座標を変数にセット
}
//画面の更新(onDrawの呼び出し)
invalidate();
return true;
}
}
}
サンプルコード②(activity_main.xml)
今回は、オリジナルの「View」を作って表示しているので、レイアウトXMLファイル「activity_main.xml」は使用しません。
実行結果
起動すると「タッチしてください」というメッセージと、現在マーカーがある座標(X:0、Y:0)が表示されます。

スクリーン内の適当なところをタッチします。

タッチした位置にマーク「■」が表示され、XとY座標の位置が表示されます。

備考・その他
「onTouchEvent」の中でキャッチするイベントを「MotionEvent.ACTION_MOVE」にすると連続して座標を取得することが可能です。
END