タッチモードにおいて, ボタンをタッチするとTouchイベントを発生するので, このTouchイベントを処理するイベントリスナを設定する.
単にボタンをタッチすると, 指がタッチしたことを示すMotionEvent.ACTION_DOWNとタッチした指が離れたことを示すMotionEvent.ACTION_UPの2つのTouchイベントが発生する.
- findViewByIdメソッドで, 指定したリソースインデックスのIDに対応したボタンのインスタンスを取得する.
- View.OnTouchListenerインタフェースを実装したオブジェクトをイベントリスナとして設定する.
- onTouchメソッドにタッチされたときの処理を記述する.
package com.moonlight_aska.android.button01;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
public class Button01 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button)findViewById(R.id.button_id);
btn.setOnTouchListener(new View.OnTouchListener() {
// ボタンがタッチされた時のハンドラ
@Override
public void onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == MotionEvent.ACTION_DOWN) {
// 指がタッチした時の処理を記述
Log.v("OnTouch", "Touch Down");
}
else if(event.getAction() == MotionEvent.ACTION_UP) {
// タッチした指が離れた時の処理を記述
Log.v("OnTouch", "Touch Up");
}
return false;
}
});
}
}