[android] 토스트 LENGTH_LONG 및 LENGTH_SHORT의 기간은 얼마입니까?

LENGTH_LONG 및 LENGTH_SHORT의 정확한 기간이 밀리 초 (ms)로 필요합니다. 또한 LENGTH_LONG을 사용하는 토스트 메시지의 지속 시간이 모든 전화기 및 API 버전에서 동일한 지속 시간을 갖는지 알아야합니다.

누군가 정의 된 기간이 어디에 있는지 알고 있습니까?, 내 말은 ms로 정의되어 있습니다. LENGTH_LONG이 값이 1 인 int const라는 것을 알고 있지만 실제 기간이 정의 된 위치를 찾을 수 없습니다.



답변

여기에 답변 했습니다 . 당신이 언급 한 것처럼 Toast.LENGTH_SHORTToast.LENGTH_LONGMS하지만, 0 또는 1에 있지 않습니다.

실제 기간은 다음과 같습니다.

private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds


답변

Toast.LENGTH_SHORTToast.LENGTH_LONG단지 플래그입니다.
여기 에서 이러한 플래그 가 정의 된 공식 안드로이드 소스를 찾을 수 있습니다 .

public class NotificationManagerService extends SystemService {

    static final int LONG_DELAY = PhoneWindowManager.TOAST_WINDOW_TIMEOUT;
    /** Amount of time (in milliseconds) a toast window can be shown. */
    //public static final int TOAST_WINDOW_TIMEOUT = 3500; // 3.5 seconds
    static final int SHORT_DELAY = 2000; // 2 seconds

    private void scheduleDurationReachedLocked(ToastRecord r)
    {
       mHandler.removeCallbacksAndMessages(r);
       Message m = Message.obtain(mHandler, MESSAGE_DURATION_REACHED, r);
       int delay = r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY;
       //....
       mHandler.sendMessageDelayed(m, delay);
     }
}


답변

토스트 기간을 변경할 수 없다는 것은 사실입니다. 그러나 대안을 찾고 있고 정말 토스트로 이것을해야한다면 이것을 시도 할 수 있습니다.

다음 줄에 또 다른 중복 토스트 유지

전의:

Toast.makeText(this, "Hello StackOverFlow", Toast.LENGTH_LONG).show();
Toast.makeText(this, "Hello StackOverFlow", Toast.LENGTH_LONG).show();

사용자는 2 개의 토스트 사이의 전환 변화를 감지하지 못합니다.

감사.


답변

다음과 setDuration같이 작업에서 기간 재정의를 설정해야합니다 .

int s = 6000; // milisegundo    
Snackbar.make(coordinatorLayout, "This is my Snackbar", Snackbar.LENGTH_LONG).setDuration(s)
.show();


답변

Toast.java 클래스에서 지원되는 setDuration () 메소드를 왜 사용하지 않는지 궁금합니다. ??

 /**
 * Set how long to show the view for.
 * @see #LENGTH_SHORT
 * @see #LENGTH_LONG
 */
public void setDuration(@Duration int duration) {
    mDuration = duration;
}


답변

시행 착오를 통해 2500ms에Toast.LENGTH_LONG 매우 가까운 지속 시간 을 발견했습니다.


답변