Android アプリ開発「MATRIX」

Androidアプリの開発に役立つサンプル集


画面がタッチされた時にX座標とY座標を取得する方法

画面がタッチされた時に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 {

//XY座標用の変数を準備
private float x_zahyou;
private float y_zahyou;

public TouchView(Context context) {
super(context);

//XY座標の初期化
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