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, прежде чем что-то делать. Отмените его, если вы получите key_up до прохода через 3 секунды. –
yep Я понял это, поэтому мне нужно реализовать слушателя, не так ли? –
Это один из способов. Вы также можете запустить новый поток (AsyncTask будет легко) и запустить свое действие оттуда, если оно пройдет. Вы можете вызвать .cancel() в AsyncTask. Просто имейте в виду, что это фактически не отменяет задачу, она просто устанавливает флаг, и вы должны проверить внутри своей AsyncTask для isCancelled(). –