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


コメント