ToastUtil工具类
Android开发固然会用到Toast,如果每次都Toast.makeToast来显示Toast的话,一方面写法麻烦,第二是多次调用Toast会使Toast一直浮在界面最上层,影响交互,最好的方式是封装一个ToastUtil:
public class ToastUtil {
private static volatile ToastUtil sToastUtil = null;
private Toast mToast = null;
/**
* 获取实例
*
* @return
*/
public static ToastUtil getInstance() {
if (sToastUtil == null) {
synchronized (ToastUtil.class) {
if (sToastUtil == null) {
sToastUtil = new ToastUtil();
}
}
}
return sToastUtil;
}
protected Handler handler = new Handler(Looper.getMainLooper());
/**
* 显示Toast,多次调用此函数时,Toast显示的时间不会累计,并且显示内容为最后一次调用时传入的内容
* 持续时间默认为short
* @param tips 要显示的内容
* {@link Toast#LENGTH_LONG}
*/
public void showToast(final String tips){
showToast(tips, Toast.LENGTH_SHORT);
}
public void showToast(final int tips){
showToast(tips, Toast.LENGTH_SHORT);
}
/**
* 显示Toast,多次调用此函数时,Toast显示的时间不会累计,并且显示内容为最后一次调用时传入的内容
*
* @param tips 要显示的内容
* @param duration 持续时间,参见{@link Toast#LENGTH_SHORT}和
* {@link Toast#LENGTH_LONG}
*/
public void showToast(final String tips, final int duration) {
if (android.text.TextUtils.isEmpty(tips)) {
return;
}
handler.post(new Runnable() {
@Override
public void run() {
if (mToast == null) {
mToast = Toast.makeText(MyApplication.getMyApplicationContext(), tips, duration);
mToast.show();
} else {
//mToast.cancel();
//mToast.setView(mToast.getView());
mToast.setText(tips);
mToast.setDuration(duration);
mToast.show();
}
}
});
}
public void showToast(final int tips, final int duration) {
handler.post(new Runnable() {
@Override
public void run() {
if (mToast == null) {
mToast = Toast.makeText(MyApplication.getMyApplicationContext(), tips, duration);
mToast.show();
} else {
//mToast.cancel();
//mToast.setView(mToast.getView());
mToast.setText(tips);
mToast.setDuration(duration);
mToast.show();
}
}
});
}
}
其实Toast调用的Context为ApplicationContext,在Application中初始化即可.
public class MyApplication extends Application {
private static Context myContext;
@Override
public void onCreate() {
super.onCreate();
myContext = this.getApplicationContext();
}
public static Context getMyApplicationContext(){
return myContext;
}
}