Common 前言
-
左右圖,一樣都點擊5次
-
彈出訊息視窗,每一次閃爍表示訊息結束
-
左圖是每次點擊都會增加 Toast 顯示的時間 = 2*5 = 10秒
- 每次閃爍時間等長 (2秒)
-
右圖是只計算最後一次點擊的 Toast 顯示時間 = 2*1 = 2秒
- 每點擊一次,都會閃爍一次
-
為了解決左圖,出現的無限累加時間 BUG
無限累加時間 只有1次時間
Toast 常用整理
Constants 常數
常數 | 時間 |
---|---|
LENGTH_LONG |
3.5秒 |
LENGTH_SHORT |
2秒 |
Constructors 建構子
Toast(Context context)
Methods 方法
-
Common 共用
setDuration(int duration)
setGravity(int gravity, int xOffset, int yOffset)
:設定訊息顯示位置- Gravity.CENTER
- Gravity.CENTER_VERTICAL
- Gravity.FILL_HORIZONTAL
- Gravity.FILL_VERTICAL
- 後兩個參數 xOffset,yOffset 通常為 0
show()
:顯示訊息cancel()
:關閉訊息
-
Text 訊息是文字
makeText(Context context, int resId, int duration)
makeText(Context context, CharSequence text, int duration)
setText(int resId)
setText(CharSequence s)
-
View 訊息是畫面,例如:圖片
setView(View view)
Tutorial 教學
Explanation 解說
- 將 Toast 的變數設為 global variable 全域變數
- 當
toast == null
創造新的 Toast - 但當
toast != null
不創造新的 Toast,只設定或變更訊息內容
Exmaple 範例
- Text 訊息是文字
private Toast toast;
@Override
protected void onCreate(Bundle savedInstanceState){
... //省略程式碼
// 避免 toast 累加時間
if (toast == null) {
toast = new Toast(this);
}
toast.setText(message)
toast.setGravity(Gravity.CENTER,0,0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.show();
}
- View 訊息是畫面,例如:圖片
private Toast toast;
... //省略程式碼
@Override
public void onClick(final View v) {
// 避免 toast 累加時間
if (toast == null) {
toast = new Toast(v.getContext());
}
toast.setView(imageView);
// 使圖片width充滿畫面
toast.setGravity(Gravity.FILL_HORIZONTAL | Gravity.FILL_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.show();
}
沒有留言:
張貼留言