android - programacion - ¿Cuál es la duración de un Toast LENGTH_LONG y LENGTH_SHORT?
toast duration (4)
Necesito la duración exacta de LENGTH_LONG y LENGTH_SHORT en milisegundos (ms). También necesito saber si la duración del mensaje Toast con LENGTH_LONG tendrá la misma duración en cualquier teléfono y con cualquier versión de API.
¿Alguien sabe dónde se define la duración? Me refiero a la definición en ms. Sé que LENGTH_LONG es algo int const con valor 1. Pero no pude encontrar dónde se define la duración real.
A través del Toast.LENGTH_LONG
prueba y error , he encontrado que Toast.LENGTH_LONG
dura casi 2500ms
Aquí la fuente oficial de Android donde se definen estos indicadores :
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);
}
}
Es cierto que no tenemos permitido cambiar la duración del Toast. Pero si está buscando una alternativa y realmente necesita hacer esto con un Toast, puede intentarlo.
Mantenga otra tostada duplicada en la línea siguiente
Ex:
Toast.makeText(this, "Hello ", Toast.LENGTH_LONG).show();
Toast.makeText(this, "Hello ", Toast.LENGTH_LONG).show();
El usuario no detectará ningún cambio en las transiciones entre 2 tostadas.
Gracias.
Respondido here . Como mencionaste Toast.LENGTH_SHORT
y Toast.LENGTH_LONG
no están en ms, sino en 0 o 1.
Las duraciones reales son:
private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds