【Android】Viewのクリックイベント

Android Tipsプログラミング

ボタンなどのViewコンポーネントがクリックされたときのイベント処理を行いたい場合は、Viewのイベントリスナーを実装します。クリックに関連するイベントには、以下の3つのリスナーが用意されています。

・View.OnClickListener (クリックしたときに呼ばれる)
・View.OnLongClickListener (長押ししたときに呼ばれる)
・View.OnTouchListener (画面をタッチしたときに呼ばれる)

1回のクリックで、それぞれ以下の順番で呼び出されます。

1) View.OnTouchListener.onTouch(); (押された)
2) View.OnLongClickListener.onLongClick(); (長押しされた)
3) View.OnTouchListener.onTouch(); (離れた)
4) View.OnClickListener.onClick(); (クリックされた)

2)は長押しされた場合にのみ呼び出されます。

import android.app.Activity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;

public class MyClass extends Activity{

  public void myMethod(){
    Button btn = (Button)this.findViewById(R.id.myButton);

    // タッチイベント
    // ボタンを押すとACTION_DOWN、離すとACTION_UPが発生
    btn.setOnTouchListener(new View.OnTouchListener(){
      public boolean onTouch(View v,MotionEvent event){
        int action = event.getAction();
        switch(action){
          case MotionEvent.ACTION_DOWN: // 押す
          case MotionEvent.ACTION_UP: // 離す
        }

        // trueにすると以下のOnLongClickやOnClickが呼ばれない
        return false;
      }
    });

    // 長押しイベント
    btn.setOnLongClickListener(new View.OnLongClickListener(){
      public boolean onLongClick(View v){
        // trueにすると以下のOnClickが呼ばれない
        return false;
      }
    });

    // クリックイベント
    btn.setOnClickListener(new View.OnClickListener(){
      public void onClick(View v){
      }
    });
  }
}

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

コメント