安卓開發過程中,提示肯定會用到。恰當的提示時方便讓用戶知道他們當前所做的動作產生的結果,好的提示自然是能夠提升用戶體驗,但是過度提示就會讓應用的用戶體驗變得糟糕。
就是這樣一個情景,當用戶連續操作某一個相同動作時,不至於相同的信息連續不斷的提示。但是又不至於在用戶操作之後不彈出提示。所以針對這樣的需求,簡單的做了如下的一個類,專門用作提示。
1.需求:
相同的提示,只會彈一個。不同的提示會連續的彈出。
2.實現:
採用系統的toast,根據消息控制是否彈出。
3.代碼:
a)代碼實現:
/** Data */
private String mTempStr = "";
private Toast toast = null;
public static GToast i;
/*********************************/
public static GToast getInsance(){
if(i == null)
i = new GToast();
return i;
}
private GToast(){}
public void show(String text){
if(toast == null){
mTempStr = text;
toast = Toast.makeText(MApplication.gContext, text, Toast.LENGTH_SHORT);
}else{
if(mTempStr.equals(text)){
mTempStr = "";
return ;
}
toast.cancel();
toast = Toast.makeText(MApplication.gContext, text, Toast.LENGTH_SHORT);
mTempStr = text;
}
toast.show();
}
當然這樣的一個靜態實例類就已經可以調用。但是爲了調用更加方便,這裏做了個簡單的封裝(其實就是使用一個i替代了getInstance()),
調用如下:
GToast.i.show("this is a test");
b)因爲這是一個靜態單例,在應用的生命週期中都可能存在,所以所持有的上下文是ApplicationContext。
這裏對這個靜態單利初始化放在了Application中(避免內存溢出的好習慣,其實全局的,靜態的單例都應該放在Application中,不然就會導致Activity不能被銷燬掉,內存溢出)。
4) 源碼如下:
https://github.com/wzp09tjlg/GToast.git