Какова продолжительность тоста LENGTH_LONG и LENGTH_SHORT
Мне нужна точная продолжительность LENGTH_LONG и LENGTH_SHORT в миллисекундах (мс). Также мне нужно знать, будет ли длительность сообщения Toast с LENGTH_LONG одинаковой продолжительностью на любом телефоне и с любой версией API.
Кто-нибудь знает, где определена продолжительность?, я имею в виду, определенный в мс. Я знаю, что LENGTH_LONG - это некоторый int const со значением 1. Но я не мог найти, где определена фактическая продолжительность.
Ответы
Ответ 1
Отвечено здесь. Как вы уже упоминали Toast.LENGTH_SHORT
и Toast.LENGTH_LONG
не находятся в ms, а 0 или 1.
Фактическая продолжительность:
private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds
Ответ 2
Здесь официальный источник android, где определены эти флаги:
public class NotificationManagerService extends SystemService {
static final int LONG_DELAY = 3500; // 3.5 seconds
static final int SHORT_DELAY = 2000; // 2 seconds
private void scheduleTimeoutLocked(ToastRecord r){
mHandler.removeCallbacksAndMessages(r);
Message m = Message.obtain(mHandler, MESSAGE_TIMEOUT, r);
long delay = r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY;
mHandler.sendMessageDelayed(m, delay);
}
}
Ответ 3
его правда, что нам не разрешено изменять продолжительность Тоста. Но если вы ищете альтернативу, и вам действительно нужно сделать это с помощью Toast, вы можете попробовать это.
Сохраните еще один повторяющийся тост в следующей строке
Пример:
Toast.makeText(this, "Hello StackOverFlow", Toast.LENGTH_LONG).show();
Toast.makeText(this, "Hello StackOverFlow", Toast.LENGTH_LONG).show();
Пользователь не обнаружит изменений в переходах между двумя тостами.
Спасибо.
Ответ 4
Сквозь проб и ошибок я обнаружил, что Toast.LENGTH_LONG
длится очень близко к 2500 мс