吐司是我们开发中常用到的,系统的吐司样式单一,位置获取麻烦.....(反正就是感觉拖泥带水的不干脆 ε=(´ο`*)))唉 ),最近上班之余搞搞MVP的基础框架,想到了写个自定义的吐司。主要为了简单,想了好久发现不会简化,那就搞个麻烦的。
1、羡慕人家Glide的链式结构,自己也搞个出来
public static ToastUtils with(Context context) {
ToastUtils.context = context;
if (toastUtils == null) {
toastUtils = new ToastUtils();
}
return toastUtils;
}
这样让ToastUtils直接调用方法变成with一个,相信不会出现调用错误的情况了吧,
2、第二那必然是能显示系统的Toast,如果不能显示系统的,那就可以从入门到放弃了。更改了一下toast的布局样式,第一个是给message文字提示加上的set方法,第二个是初始化了全局的toast,防止空指针出现。然后就是基本的长短toast展示:
@SuppressLint("ShowToast")
public ToastUtils shortToast() {
if (toastView != null && toastView.getChildCount() > 1) {
toastView = null;
} else {
toast.setText(message);
toast.setDuration(Toast.LENGTH_SHORT);
}
return this;
}
当然short 和long方法是一样的,只是时间设置不一样。接下来说一说自定义布局,首先用addView添加布局,经过查看了源码才知道Toast默认布局是有message这个id的,一个大写的尴尬所以跑过来改一下原来写的。
/**
* 向Toast中添加自定义View
*/
public ToastUtils addView(View view, int position) {
toastView = (LinearLayout) toast.getView();
toastView.addView(view, position);
return this;
}
可以给当前的View设置背景和文字颜色。然后添加布局和控件位置。
/**
* 设置Toast字体
*/