LENGTH_LONGとLENGTH_SHORTの正確な継続時間がミリ秒(ms)で必要です。また、LENGTH_LONGを使用したトーストメッセージの持続時間が、どの電話でも、どのAPIバージョンでも同じ持続時間になるかどうかも知る必要があります。
誰かが期間がどこで定義されているか知っていますか?つまり、ミリ秒で定義されていることを意味します。LENGTH_LONGが値1のint constであることはわかっていますが、実際に定義されている期間がどこにあるのかわかりませんでした。
LENGTH_LONGとLENGTH_SHORTの正確な継続時間がミリ秒(ms)で必要です。また、LENGTH_LONGを使用したトーストメッセージの持続時間が、どの電話でも、どのAPIバージョンでも同じ持続時間になるかどうかも知る必要があります。
誰かが期間がどこで定義されているか知っていますか?つまり、ミリ秒で定義されていることを意味します。LENGTH_LONGが値1のint constであることはわかっていますが、実際に定義されている期間がどこにあるのかわかりませんでした。
回答:
Toast.LENGTH_SHORT
そしてToast.LENGTH_LONG
ちょうどフラグです。これらのフラグが定義さ
れている公式のandroidソースはこちらです。
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);
}
}
static final int LONG_DELAY = PhoneWindowManager.TOAST_WINDOW_TIMEOUT; static final int SHORT_DELAY = 2000; // 2 seconds still the same
トーストの時間を変更することはできません。しかし、代わりの方法を探していて、トーストでこれを行う必要がある場合は、これを試すことができます。
次の行に別の複製トーストを入れます
例:
Toast.makeText(this, "Hello StackOverFlow", Toast.LENGTH_LONG).show();
Toast.makeText(this, "Hello StackOverFlow", Toast.LENGTH_LONG).show();
ユーザーは、2つのトースト間の移行の変化を検出しません。
ありがとう。
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;
}