android ToastUtil工具类封装
Posted 孤注一掷 、
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android ToastUtil工具类封装相关的知识,希望对你有一定的参考价值。
使用:
ToastUtil.showToast(LoginActivity.this,"登陆成功!");
封装后具有以下优点:
- 全局只有一个Toast实例,避免频繁弹框
- 可通过Aadpter管理Toast开关
- 子线程可直接调用
代码:
public final class ToastUtil {
private static ToastAdapter mAdapter;
private static Toast mToast;
public static void showToast(Context context, String msg) { //直接显示字符串
showToast(context, msg, Toast.LENGTH_SHORT);
}
public static void showToast(Context context,@StringRes int resId){
showToast(context,resId,Toast.LENGTH_SHORT);
}
public static void showToast(Context context,@StringRes int resId,int duration){
showToast(context,context.getResources().getText(resId),duration);
}
public static void showToast(Context context, CharSequence msg,int duration){
boolean b = mAdapter == null || mAdapter.displayable();
if (!b)
return;
if (Looper.getMainLooper() == Looper.myLooper())
obtainAndShowToast(context, msg, duration);
else
showToastOnUiThread(context, msg, duration);
}
public static void cancelToast() { //取消
boolean b = mToast!=null && (mAdapter == null || mAdapter.cancellable());
if (!b)
return;
mToast.cancel();
}
public interface ToastAdapter {
boolean displayable();
boolean cancellable();
}
public static void setToastAdapter(ToastAdapter adapter) {
mAdapter = adapter;
}
private static void showToastOnUiThread(final Context context, final CharSequence msg, final int
duration) {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
obtainAndShowToast(context, msg, duration);
}
});
}
@SuppressLint("ShowToast")
private static void obtainAndShowToast(final Context context, final CharSequence msg, final int
duration) {
if (mToast == null) {
mToast = Toast.makeText(context.getApplicationContext(), msg, duration);
} else {
mToast.setText(msg);
mToast.setDuration(duration);
}
mToast.show();
}
}
以上是关于android ToastUtil工具类封装的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio 第六十一期 - Android ToastUtil