0
我希望當你在3秒鐘內按住一個按鈕時,我會嘗試使用上面的代碼,但只有當我在暫停期間停止按住時纔會執行某些操作。我應該實現一個監聽器或類似的東西嗎?知道按鈕被按住的時間
finishPushing = true;
.
.
.
button.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event) {
if(android.os.SystemClock.elapsedRealtime() - event.getDownTime() > 3000 && (event.getPointerCount() == 1) && finishPushing)
{
// Do something
finishPushing = false;
}
else{
finishPushing = true;
}
return false;
}
});
你以正確的方式,但你忘了,這個方法只是獲取新的觸摸事件解僱。在你堅持下來的時候,最後一個事件就是key_down,下一個將是key_up。你可以開始一個小循環(確保它的異步),在做某件事之前它會計爲3。如果您在3秒鐘之前收到key_up,則取消它。 – 2013-03-12 09:21:39
是的,我想到了,所以我必須實現一個監聽器不是嗎? – 2013-03-12 09:22:56
這是一種方式。你也可以啓動一個新的線程(AsyncTask會很容易),並且如果它通過,從那裏啓動你的動作。你可以在AsyncTask上調用.cancel()。請記住,這並不會取消任務,它只是設置一個標誌,並且您必須在AsyncTask中檢查isCancelled()。 – 2013-03-12 09:24:41