ホームへ戻る

2.3 画面のタッチイベントを取得する


 Androidの醍醐味は何と言っても画面にタッチしたりフリックできることですね。
本章では画面のタッチイベントの取得方法を紹介します。

まずタッチした位置を表示する為に、HelloWorldを表示した時に使用したTextViewを使用します。



TextViewを作ります。



idは「textView1」になっています。

さて、タッチイベントの取得方法ですがActivityに既に取得するメソッドが存在するので、
onTouchEvent というメソッドをオーバーライドすれば良いだけです。
サンプルプログラムを見てみましょう。


public class AndroidsCastleActivity extends Activity{
         
    private TextView textView;
        
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        textView = (TextView)findViewById(R.id.textView1);
    }
    
    @Override
    public boolean onTouchEvent(MotionEvent e) {
     
        textView.setText( "X:" + e.getX() + "\nY:" + e.getY() );
     
        switch (e.getAction()) {
        case MotionEvent.ACTION_DOWN:
            Log.d("Sample", "ACTION_DOWN");
            break;
        case MotionEvent.ACTION_UP:
            Log.d("Sample", "ACTION_UP");
            break;
        case MotionEvent.ACTION_MOVE:
            Log.d("Sample", "ACTION_MOVE");
            break;
        }
        return true;
    }
}


onTouchEventの引数であるMotionEventを使って情報を取得します。
まず、
MotionEvent.getAction() によって何のアクションにより本メソッドが呼ばれたかを判定します。
アクションには主に以下の種類があります。

ACTION_DOWN 押した
ACTION_MOVE 押したままスライド
ACTION_UP 離した
ACTION_CANCEL UPとDOWNの同時発生

押している指の位置は MotionEvent.getX() 及び MotionEvent.getY() で取得します。
他に取得できる主な情報は

getX(),getY() 押された座標
getAction() アクションの種類
getDownTime() 押されている時間[ms]
getEdgeFlags() 押した位置が画面端か
getEventTime() タッチされていた継続時間(ms単位)
getPressure() タッチされた圧力

等がありますが、他にも無数にあります。

詳しくはリファレンスを参照して下さい。

実行結果


エミュレータではクリックが押さえたことを意味します。

本章のプロジェクトはこちら


→分からないことがあれば掲示板で質問して下さい


Portions of this page are modifications based on work created and shared by Google and used according to terms described in the Creative Commons 3.0 Attribution License.

- Remical Soft -