Buttonにイベントをつける
Button(またはImageButton)がクリックされた時にこうしたい・・・
という処理を記述する方法。
Button myButton = (Button)findViewById(R.id.myBtn); // IdからButtonを取得。ImageButtonならImageButtonクラスで取得。 myButton.setOnTouchListener(new Button.OnTouchListener() { // タッチされた時に受ける関数を設定 @Override public boolean onTouch(View v, MotionEvent event){ int action = event.getAction(); switch(action){ case MotionEvent.ACTION_DOWN:{ // ボタンに触った時にここに来る myDownFunc(); return true; } case MotionEvent.ACTION_UP:{ // 指がボタンから離れたらここに来る myUpFunc(); return true; } } return false; } });
ところで、OnTouchListener以外に、OnClickListenerもあるので、気になって調べた。
これによれば、OnTouchListenerは触れたと離れたそれぞれに対してイベントが来るらしい。
OnClickListenerはクリック、すなわち触れたと離れたのワンセットでイベントが来るらしい。
このほか、長押しの場合にはOnLongClickListenerというリスナーからもイベントが来るらしい。
- 触れた
- 長押し(長押しの場合のみ)
- 離れた
- クリック
の順番でイベントが来るらしい。ちなみに、長押しではコールバック関数として
OnLongTouch(View v)を用いるそうです。クリックはOnClick(View v)。
その他、trueを返すとそれ以降のイベントが飛ばないらしいです。
長押しで処理したら後はイベントいらない、、、ということでしょうか。
長押しに対応している辺りが助かりますね。
Windowsはそういうの無い(?)ですから、自分で何とかするしかないです。
組み込みのことを考慮したOSなんだなぁと感心しました。
Androidをあわてて勉強してる身分ですが、
本当に勉強になります。見知らぬ方、ありがとうございます。