ボタンが最初に押されたときに開始し、リリースされたときに終了するタイマーを開始したい(基本的に、ボタンが押されている時間を測定したい)。両方の時間でSystem.nanoTime()メソッドを使用し、最後の数字から最初の数字を引いて、ボタンが押されている間に経過した時間の測定値を取得します。
(nanoTime()またはボタンが押されている時間を測定する他の方法以外の何かを使用するための提案があれば、私もそれらを受け入れます。)
ありがとう!アンディ
OnClickListenerの代わりに OnTouchListener を使用します。
// this goes somewhere in your class:
long lastDown;
long lastDuration;
...
// this goes wherever you setup your button listener:
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
lastDown = System.currentTimeMillis();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
lastDuration = System.currentTimeMillis() - lastDown;
}
return true;
}
});
これは間違いなく機能します:
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
increaseSize();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
resetSize();
}
return true;
}
});
.