安卓开发过程中,提示肯定会用到。恰当的提示时方便让用户知道他们当前所做的动作产生的结果,好的提示自然是能够提升用户体验,但是过度提示就会让应用的用户体验变得糟糕。
就是这样一个情景,当用户连续操作某一个相同动作时,不至于相同的信息连续不断的提示。但是又不至于在用户操作之后不弹出提示。所以针对这样的需求,简单的做了如下的一个类,专门用作提示。
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