重複の可能性:
Android の onPress/onRelease
ユーザーがボタンを押したままにすると、ボタンの色が変わり、ユーザーがボタンを離すと、ボタンは通常の状態に戻ります。
これを捉えるイベントはありますか?
私はbutton.onStateChangedのようなものを検索しようとしましたが、運がありません..
編集: ユーザーが長くクリックすると、自動インクリメントを開始したい
// Auto increment for a long click
increment.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View a) {
autoIncrement = true;
repeatUpdateHandler.removeCallbacks(mRepeatUpdateHandler);
repeatUpdateHandler.post(mRepeatUpdateHandler);
return false;
}
});
そして、ユーザーが指でボタンを離したときに、自動インクリメントを停止したい
increment.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP && autoIncrement) {
//Stop autoincrement
repeatUpdateHandler.removeCallbacks(mRepeatUpdateHandler);
autoIncrement = false;
}
return false;
}
});
これはハンドラです:
RepetetiveUpdater mRepeatUpdateHandler = new RepetetiveUpdater();
....
class RepetetiveUpdater implements Runnable {
public void run() {
if (autoIncrement) {
increment();
repeatUpdateHandler.postDelayed(new RepetetiveUpdater(),
REPEAT_DELAY);
} else if (autoDecrement) {
decrement();
repeatUpdateHandler.postDelayed(new RepetetiveUpdater(),
REPEAT_DELAY);
}
}
}
しかし、これはユーザーがボタンの上に指を離したときにのみ機能し、画面上の別の場所にドラッグすると、カウンターが実行され続けます。何かアイデアはありますか?