Androidで特定の位置のタッチイベントをシミュレート・検出する方法【コード例付き】
はじめに
このチュートリアルでは、Androidアプリで特定の位置(座標)におけるタッチイベントを扱う方法を解説します。MotionEvent クラスを利用することで、画面上のどこがタップされたのか、その座標(X・Y)とイベントの種類(押下・移動・解放)をプログラム側で取得できるようになります。
実装手順
ステップ1:新規プロジェクトの作成
まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目を入力してプロジェクトを作成してください。
ステップ2:レイアウトファイルの準備
次に、res/layout/activity_main.xml に以下のコードを追加します。
<?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" android:padding="4dp" tools:context=".MainActivity"> </RelativeLayout>
ステップ3:MainActivity.java の実装
src/MainActivity.java に以下のコードを追加します。ポイントは onTouchEvent() メソッドをオーバーライドし、タッチの各アクション(ACTION_DOWN / ACTION_MOVE / ACTION_UP)ごとに getX() と getY() で座標を取得して Toast 表示させている点です。
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private boolean isTouch = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int X = (int) event.getX();
int Y = (int) event.getY();
int eventAction = event.getAction();
switch (eventAction) {
case MotionEvent.ACTION_DOWN:
Toast.makeText(this, "ACTION_DOWN "+"X: "+X+" Y: "+Y, Toast.LENGTH_SHORT).show();
isTouch = true;
break;
case MotionEvent.ACTION_MOVE:
Toast.makeText(this, "MOVE "+"X: "+X+" Y: "+Y,
Toast.LENGTH_SHORT).show();
break;
case MotionEvent.ACTION_UP:
Toast.makeText(this, "ACTION_UP "+"X: "+X+" Y: "+Y, Toast.LENGTH_SHORT).show();
break;
}
return true;
}
}ステップ4:AndroidManifest.xml の設定
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:roundIcon="@mipmap/ic_launcher_round" 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」アイコンをクリックしてください。デバイス選択のダイアログが表示されたら、接続したモバイルデバイスを選択します。すると、端末にアプリの初期画面が表示されます。
画面の任意の場所をタップ・スワイプしてみてください。タッチした位置のX・Y座標とイベントの種類が、以下のようにToastで表示されます。


まとめ
このように onTouchEvent() をオーバーライドすれば、ユーザーが画面のどの位置を操作したかを簡単に検出できます。この仕組みを応用すれば、カスタムジェスチャーの実装や描画アプリ、ゲームのコントロールなど、さまざまなインタラクティブな機能の開発につながります。
-
AndroidでSearchViewを使ってRecyclerViewをフィルタリングする方法を解説
この記事では、AndroidアプリにおいてSearchViewを使用してRecyclerViewの表示内容をリアルタイムに絞り込む(フィルタリングする)方法を、実際のコード例とともに段階的に解説します。全体の流れ実装のポイントは以下の通りです。RecyclerViewに表示するデータリストを準備するアダプターにFilterableインターフェースを実装するメニューに配置したSearchViewの入力イベントを受け取り、フィルターを呼び出すステップ1:新規プロジェクトの作成まず、Android Studioで新しいプロジェクトを作成します。「File」→「New Project」を選択し、必要な
-
【Android】Googleマップでタッチ操作とその位置を検出する方法
この記事では、AndroidアプリのGoogleマップ上でタッチ操作やその位置を検出する方法を、具体的なコード例とともにステップごとに解説します。ステップ1:新しいプロジェクトを作成するAndroid Studioで新しいプロジェクトを作成します。メニューから「File」⇒「New Google Maps Project」を選択し、必要な情報を入力してプロジェクトを作成してください。ステップ2:レイアウトファイルを編集するres/layout/activity_main.xml に以下のコードを追加します。<?xml version="1.0" encoding=&q