developer tip

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

copycodes 2020. 10. 9. 11:19
반응형

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


LENGTH_LONG 및 LENGTH_SHORT의 정확한 기간 (밀리 초)이 필요합니다. 또한 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

다음은 이러한 플래그 가 정의 된 공식 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);
    }
}

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

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

전의:

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

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

감사.


다음과 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 매우 가까운 지속 시간 을 발견했습니다.

참고 URL : https://stackoverflow.com/questions/7965135/what-is-the-duration-of-a-toast-length-long-and-length-short

반응형