Подтвердить что ты не робот

Какова продолжительность тоста LENGTH_LONG и LENGTH_SHORT

Мне нужна точная продолжительность LENGTH_LONG и LENGTH_SHORT в миллисекундах (мс). Также мне нужно знать, будет ли длительность сообщения Toast с LENGTH_LONG одинаковой продолжительностью на любом телефоне и с любой версией API.

Кто-нибудь знает, где определена продолжительность?, я имею в виду, определенный в мс. Я знаю, что LENGTH_LONG - это некоторый int const со значением 1. Но я не мог найти, где определена фактическая продолжительность.

4b9b3361

Ответ 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 мс