どこかで見つけたオープンソースのnumberpickerを使用しています(Jeffrey F. Coleの功績による)が、バグを見つけました。
numberpicker には、ボタンをタッチしたときに数値をより速く増加させるハンドラーがあります。
long`private Handler repeatUpdateHandler = new Handler();
`
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);
}
}
}
.....
public class NumberPicker extends LinearLayout {
.....
// Auto increment for a long click
increment.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View arg0) {
autoIncrement = true;
repeatUpdateHandler.post(new RepetetiveUpdater());
return false;
}
});
// When the button is released, if we're auto incrementing, stop
increment.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP && autoIncrement) {
autoIncrement = false;
}
return false;
}
});
問題は、ボタンをロングクリックするとカウンターが増加し始めますが、指を押したまま画面上で指をドラッグすると、指を離してもカウンターが加算され続けることです。
では、指が numberpicker レイアウトから外れたことを検出して、カウンターを停止するにはどうすればよいでしょうか?
どうも :)