【Android】Viewのタッチイベント

Android Tipsプログラミング

Viewコンポーネントのタッチイベントについて、もう少し詳細に説明します。
たとえば画面を指で触ったとき、触った指を離したとき、画面上をスライドさせたとき、などその契機ごとにOnTouchListenerが呼び出されます。
タッチした時間や位置(座標)、押す強さなんかもリスナーで取得できるようです。

import android.app.Activity;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.LinearLayout;

public class MyClass extends Activity implements OnTouchListener{
  public void myMethod(){
    LinearLayout layout = (LinearLayout)this.findViewById(R.id.myLayout);
    layout.setOnTouchListener(this);
  }

  public boolean onTouch(View v,MotionEvent event){
    // アクションを取得
    int action = event.getAction();
    switch(action){
      case MotionEvent.ACTION_DOWN: // 押す
      case MotionEvent.ACTION_UP: // 離す
      case MotionEvent.ACTION_MOVE: // 動かす
      case MotionEvent.ACTION_CANCEL: // 押している間にキャンセル
    }

    // イベント開始(押した)時刻(恐らくアプリ起動からの経過時間ミリ秒)
    long start = event.getDownTime(); // [ms]

    // このイベントの発生時刻(恐らくアプリ起動からの経過時間ミリ秒)
    long now = event.getEventTime(); // [ms]

    // 絶対座標
    float ax = event.getRawX();
    float ay = event.getRawY();

    // 相対座標
    float x = event.getX();
    float y = event.getY();

    // 押す強さ(0.0 ~ 1.0  1.0 = normal)
    float pressure = event.getPressure();

    // true:次のイベントを処理しない
    return false;
  }
}

参考: Viewコンポーネントの余白設定
参考: TextViewのカスタマイズ
参考: ImageViewのカスタマイズ
参考: Viewのクリックイベント

コメント