AndroidでのToastの使用体験について
Androidの開発では、Toastをユーザーの操作ヒントとしてよく使用していますが、Toastの表示時間はソースコードに2つの定数しか定義されていません.以下のようにします.
Toastソース分析:
AndroidソースのJavaというクラスには2つの静的変数が定義されており,それぞれToast.に対応する.LENGTH_LONG(3.5秒)とToast.LENGTH_SHORT(2秒)の値:
呼び出し方法は次のとおりです.
つまり、通常の状況ではmakeText(Context context,CharSequence text, int duration).show()のdurationはこの2つの値しか設定できませんが、他の値は役に立ちません.
カスタムToast時間:
実際のプロジェクトではToast.LENGTH_SHORT(2秒)はユーザーにとって長いように見えますが、ここではhandlerで手動cancelというtoastを手動でcancelし、共通の方法として使用することができます.具体的な方法は以下の通りです.
分かち合いを学び,人に自分の利益を教える.
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);
}
});
}
分かち合いを学び,人に自分の利益を教える.