ボタンなどの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のタッチイベント
コメント