Android アプリ開発「MATRIX」

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

画面をタッチしたまま指を動かす「ムーブイベント」を検出する方法

「ムーブイベント」を検出する

スマートフォンやタブレットの画面をタッチしたまま指を動かす「ムーブイベント」を検出するには View クラスの「onTouchEvent」メソッドの中で「MotionEvent.ACTION_MOVE」アクションを取得します。

サンプルコード①(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;
private String mess;
private final static String def_mess = "ムーブしてください";

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

//変数の初期化
x_zahyou = 0;
y_zahyou = 0;
mess = def_mess;
}

//描画するところ
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

//文字の表示スタイルを設定
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setTextSize(50);
paint.setStrokeWidth(30);

//画面に文字列などを表示する
canvas.drawText(mess,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_MOVE) {

mess = "ムーブ中・・・"; //
x_zahyou = event.getX(); //X座標を変数にセット
y_zahyou = event.getY(); //Y座標を変数にセット

} else if(event.getAction() == MotionEvent.ACTION_UP) {

//メッセージを元に戻す
mess = def_mess;
}

//Viewの更新(onDrawの呼び出し)
invalidate();
return true;
}
}
}

サンプルコード②(activity_main.xml)

今回は、オリジナルの「View」を作って表示しているので、レイアウトXMLファイル「activity_main.xml」は使用していません。

実行結果

アプリを起動すると「ムーブしてください」というメッセージと、現在マーカー「■」がある座標(X:0、Y:0)が表示されます。

アンドロイド開発「ムーブイベントを検出する」①

画面(スクリーン)内の適当なところをタッチしてそのまま指を移動すると、表示が「ムーブ中・・・」に変わり、X座標とY座標の値が連続で変わります。

アンドロイド開発「ムーブイベントを検出する」②

画面(スクリーン)から指を離すと、表示が「ムーブしてください」に戻ります。

アンドロイド開発「ムーブイベントを検出する」③

備考・その他

アプリだけでなくゲームなどにも活用できるのでムーブイベントを検出する方法を知っておくととても便利ですね。

END