我想啓動一個定時器,該定時器在第一次按下按鈕時開始並在釋放時結束(基本上我想測量按鈕按下的時間長度)。我將在這兩個時間使用System.nanoTime()方法,然後從最後一個數字中減去初始數字,以獲得按鈕按下期間所經過的時間的度量。如何檢測何時按下按鈕並在android上釋放
(如果您對使用超過nanoTime()或測量按鈕多長時間按住的一些其他的方式以外的其他任何建議,我是開放給那些爲好。)
謝謝! 安迪
我想啓動一個定時器,該定時器在第一次按下按鈕時開始並在釋放時結束(基本上我想測量按鈕按下的時間長度)。我將在這兩個時間使用System.nanoTime()方法,然後從最後一個數字中減去初始數字,以獲得按鈕按下期間所經過的時間的度量。如何檢測何時按下按鈕並在android上釋放
(如果您對使用超過nanoTime()或測量按鈕多長時間按住的一些其他的方式以外的其他任何建議,我是開放給那些爲好。)
謝謝! 安迪
使用OnTouchListener代替OnClickListener:
// 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;
}
});
爲我們提供您的按鈕來完成的代碼點擊 – 2012-08-15 06:09:56
不幸的是,這在用鍵盤按下按鈕時不起作用。它只在被觸摸時才起作用。 – 2012-08-26 21:57:14
所以你想看看鍵盤按鈕被按下多長時間? – Nick 2012-08-27 01:38:47
計算差異。
這肯定會工作:
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;
}
});
這個SO後類似:http://stackoverflow.com/q/4410362/2069407 – 2016-04-28 15:19:40