为了在今后的项目中避免toast写多次,一下子出现多个toast的时候避免阻塞,这边就干脆将其封装之后再用。
首先需要创建一个MyToast工具类:
public class MyToast {
private static Handler handler = new Handler(Looper.getMainLooper());
private static Toast toast = null;
private static Object synObj = new Object();
public static void showMessage(final String msg) {
showMessage(msg, Toast.LENGTH_SHORT);
}
/**
* 根据设置的文本显示
* @param msg
*/
public static void showMessage(final int msg) {
showMessage(msg, Toast.LENGTH_SHORT);
}
/**
* 显示一个文本并且设置时长
* @param msg
* @param duration
*/
public static void showMessage(final CharSequence msg, final int duration) {
if (TextUtils.isEmpty(msg)) {
MyLog.d("[ToastUtil] response message is null.");
return;
}
handler.post(new Runnable() {
@Override
public void run() {
synchronized (synObj) {
//加上同步是为了每个toast只要有机会显示出来
if (toast != null) {
toast.setText(msg);
toast.setDuration(duration);
} else {
toast = Toast.makeText(BaseApplication.getInstance().getApplicationContext(), msg, duration);
TextView view = (TextView) toast.getView().findViewById(android.R.id.message);
if (view != null) {
view.setGravity(Gravity.CENTER);
}
}
toast.show();
}
}
});
}
/**
* 资源文件方式显示文本
* @param id
* @param duration
*/
public static void showMessage(final int id, final int duration) {
handler.post(new Runnable() {
@Override
public void run() {
synchronized (synObj) {
if (toast != null) {
toast.setText(id);
toast.setDuration(duration);
} else {
toast = Toast.makeText(BaseApplication.getInstance().getApplicationContext(), id, duration);
}
toast.show();
}
}
});
}
}
将写好的工具类应用在实际项目中:
MyToast.showMessage("我是吐司!");
学以致用,谢谢~