Toastの表示時間を任意に設定する方法


前言
AndroidのToastコントロールは、ユーザーと対話するウィンドウを適用し、ユーザーに対話する情報を提示したり警告したりしますが、Toastが設定されていてもLENGTH_LONG、数秒しかないのに、どうやってこの時間を勝手に設定しますか?!
方法
まず、次の方法を書きます.
public void showMyToast(final Toast toast, final int cnt) {
        final Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                toast.show();
            }
        }, 0, 3500);
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                toast.cancel();
                timer.cancel();
            }
        }, cnt );
    }

もちろん、このメソッドをstaticに設定して、ツールクラスに追加して、呼び出しを容易にすることもできます.次の方法を使用します.
Toast toast=Toast.makeText(RegistActivity.this, "           Toast", Toast.LENGTH_LONG);
showMyToast(toast, 9*1000);

注意すべき点:
  • Toastオブジェクトを作成する場合は、Toast.を設定します.LENGTH_LONG、最後にshow()メソッドを呼び出さないでください.
  • showMyToast()メソッドは、2つのパラメータを入力し、最初のパラメータは私たちが作成したToastオブジェクトであり、2番目のパラメータは私たちが表示したいミリ秒数を設定します!

  • この方法は、比較的巧みで、投機的に巧みな成分もあります!AndroidシステムToastの表示は、Toastキューが存在するため、Toastが表示されると、キューから次のキューが取り出されて表示されます!また、ソースコードのToast.LENGTH_LONGの表示時間は3500ミリ秒、LENGTH_SHORTの表示時間は2000ミリ秒です.これは、frameworks\base\services\Java\com\android\serverパスの下にNotificationManagerService.javaのファイルがあります.
    private static final int LONG_DELAY = 3500; 
    private static final int SHORT_DELAY = 2000;

    ここで採用する方法は、Timerを使用してTimeTaskをスケジューリングし、delayは0 sを設定しているので、すぐにtoast.show()を実行し、3.5 sおきにもう一度実行し、順番に類推します.最後に、別のTimerを使用してキャンセル前のtimerと取り消しtoastをスケジューリングし、ここではcntミリ秒の実行遅延が設定されています.ここでのcntは私たちが示したいミリ秒数です.