Android
 Computer >> コンピューター >  >> プログラミング >> Android

Androidでタッチ位置(座標)を取得する方法を徹底解説

このチュートリアルでは、Androidデバイス上でユーザーがタッチした位置(X・Y座標)を取得する方法を、実際のサンプルコードとともに段階的に解説します。タッチ位置の取得には、MotionEvent クラスの getX() および getY() メソッドを使用します。

手順1:Android Studioで新規プロジェクトを作成する

Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成してください。

手順2:レイアウトファイル(res/layout/activity_main.xml)にコードを追加する

このレイアウトでは、X軸・Y軸の座標値を表示するためのEditTextを2つと、タッチ操作を受け付けるTextViewを中央に配置しています。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
   xmlns:tools="https://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context="MainActivity">
   <EditText
      android:layout_width="400dp"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:hint="Points on X-Axis" />
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText2"
      android:layout_below="@+id/editText"
      android:layout_alignLeft="@+id/editText"
      android:layout_alignStart="@+id/editText"
      android:hint="Points on Y-Axis"
      android:layout_alignRight="@+id/editText"
      android:layout_alignEnd="@+id/editText" />
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Touch to get co-ordinates"
      android:id="@+id/textview"
      android:focusable="true"
      android:clickable="true"
      android:textSize="20dp"
      android:layout_centerVertical="true"
      android:layout_centerHorizontal="true" />
</RelativeLayout>

手順3:MainActivity.java にコードを追加する

TextViewに対して setOnTouchListener() を設定し、onTouch() メソッド内で event.getX()event.getY() を呼び出すことで、タッチされた位置の座標を取得します。取得した値は、それぞれのEditTextに文字列として表示されます。

package app.com.sample;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
   TextView T;
   EditText E1, E2;
   float x = 0f;
   float y = 0f;
   @Override
   protected void onCreate(Bundle savedInstanceState){
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      E1 = (EditText) findViewById(R.id.editText);
      E2 = (EditText) findViewById(R.id.editText2);
      T=(TextView)findViewById(R.id.textview);
      T.setOnTouchListener(new View.OnTouchListener(){
         @Override
         public boolean onTouch(View v, MotionEvent event) {
            final float x = event.getX();
            final float y = event.getY();
            float lastXAxis = x;
            float lastYAxis = y;
            E1.setText(Float.toString(lastXAxis));
            E2.setText(Float.toString(lastYAxis));
            return true;
         }
      });
   }
}

手順4:AndroidManifest.xml にコードを追加する

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample>
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
      <activity android:name=".MainActivity">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

アプリを実行してみよう

それでは、作成したアプリを実行してみましょう。ここでは、実機のAndroidスマートフォンをパソコンに接続しているものとして説明します。Android Studioでプロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックしてください。接続済みのモバイルデバイスを選択すると、端末に以下のような画面が表示されます。

Androidでタッチ位置(座標)を取得する方法を徹底解説

Androidでタッチ位置(座標)を取得する方法を徹底解説

画面上のテキストをタップすると、タッチした位置のX座標とY座標がそれぞれの入力欄に即座に表示されます。この仕組みを応用すれば、ドラッグ操作やジェスチャー検出など、より高度なタッチ操作の実装にもつなげられます。

プロジェクトのコード一式は、こちらからダウンロードできます。

  1. AndroidスマホでMarshmallow(マシュマロ)の起動アニメーションを導入する方法

    最新バージョンのAndroid「Android 6.0 Marshmallow」は、まだ自分の端末で正式に動かせる状態にはなっていませんが、その起動アニメーション(ブートアニメーション)なら今すぐ導入することができます。このブートアニメーションはroot化済みのAndroid端末向けに公開されており、root対応ファイルマネージャーを使えば簡単にインストール可能です。インストールが完了すると、従来の純正ブートアニメーションは消え、端末の起動時に最新のMarshmallowアニメーションが表示されるようになります。「早く試してみたい!」というAndroidファンの方は、以下の手順に従って進めてみ

  2. ルート化不要!Androidスマホで3Dタッチ風のクイック操作を実現する方法

    iPhoneの3Dタッチとは?その便利さ 3Dタッチは、iPhone 6s以降のモデルに搭載された魅力的な機能です。これらの端末には圧力センサーが内蔵されており、アプリのアイコンを強めに押し込むと、ショートカットメニューなど新しい操作オプションが表示されます。 つまり、アプリを起動しなくてもその機能を利用できるということです。さらに、アイコンを長押しするだけでアプリを素早くアンインストールできる点も大きなメリットです。 Androidでも3Dタッチは再現できる 友人がiPhone 6s以降でこの機能を使っているのを見たことはありませんか?実は、こうした「押し込んで操作する」感覚は、Andro