AndroidでのToastの使用体験について


Androidの開発では、Toastをユーザーの操作ヒントとしてよく使用していますが、Toastの表示時間はソースコードに2つの定数しか定義されていません.以下のようにします.
Toastソース分析:
AndroidソースのJavaというクラスには2つの静的変数が定義されており,それぞれToast.に対応する.LENGTH_LONG(3.5秒)とToast.LENGTH_SHORT(2秒)の値:
 private static final int LONG_DELAY = 3500; // 3.5 seconds           
 private static final int SHORT_DELAY = 2000; // 2 seconds

呼び出し方法は次のとおりです.
private void scheduleTimeoutLocked(ToastRecord r, boolean immediate){
    Message m =Message.obtain(mHandler, MESSAGE_TIMEOUT, r);
    long delay =immediate ? 0 :(r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY);
    mHandler.removeCallbacksAndMessages(r);
    mHandler.sendMessageDelayed(m, delay);
}

つまり、通常の状況ではmakeText(Context context,CharSequence text, int duration).show()のdurationはこの2つの値しか設定できませんが、他の値は役に立ちません.
カスタムToast時間:
実際のプロジェクトではToast.LENGTH_SHORT(2秒)はユーザーにとって長いように見えますが、ここではhandlerで手動cancelというtoastを手動でcancelし、共通の方法として使用することができます.具体的な方法は以下の通りです.
/**
*   toast,        。
* param1:activity    context
* param2:word          toast   
* param3:time length  long  ,         ( 500)
*/
public static void showToast(final Activity activity, final String word, final long time) {
	activity.runOnUiThread(new Runnable() {
		public void run() {
			final Toast toast = Toast.makeText(activity, word, Toast.LENGTH_LONG);
			toast.show();
			Handler handler = new Handler();
			handler.postDelayed(new Runnable() {
				public void run() {
					toast.cancel();
				}
			}, time);
		}
	});
}

分かち合いを学び,人に自分の利益を教える.