supercustomtoast
Introduction: 自定义 Toast,带来不一样的效果。可以自定义布局,动画,消失时间,图标......
Tags:
Toast-信息提示-操作提示-自定义 Toast,带来不一样的效果。
简介
最近项目需要,有些地方的提示信息需要用到 Toast,但是系统的 Toast 样式有点丑,位置单一,并且只能接受两个显示时间长度。因此有些时候系统的 Toast 有点显得很弱了。
当然系统的 Taost,也暴露了部分的方法,
见下图:

可以借助这些方法设置直接替换视图、设置显示时长、设置边距属性、设置显示位置、设置显示文字内容。
不过,这些远远不够,比如时间的设置。还有最重要的,是系统原生的 Toast 是呈队列显示,必须要等到前一条 Toast 消失才会显示下一条。明明是状态已经改变,可是上一状态的 Toast 还迟迟没有消失。
于是,为了满足项目需要,搜查资料,阅读源码,完成了这个 Demo
效果图

方法
默认 Toast
/** * 显示一条 Toast * * @param msg 消息内容 */ public void show(String msg) { show(getTextView(msg), null, null, null); }自定义 Toast,5 秒
/** * 显示一条 Toast * * @param msg 消息内容 * @param duration 持续时间,单位为毫秒 */ public void show(String msg, long duration) { show(getTextView(msg), duration, null, null); }设置背景颜色的 Toast+文字
toast.setDefaultBackgroundColor(Color.RED, 200); toast.setDefaultTextColor(Color.BLUE); toast.show("带有背景色 Toast");- 自定义 Toast 的入场和出场动画
/**
* 显示一条 Toast
*
* @param msg 消息内容
* @param duration 持续时间,单位为毫秒
* @param startAnim 入场动画
* @param endAnim 离场动画
*/
public void show(String msg, Long duration, Animation startAnim, Animation endAnim) {
show(getTextView(msg), duration, startAnim, endAnim);
}
利用 Toast 显示应用 Logo
ImageView iv = new ImageView(MainActivity.this); iv.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); iv.setImageResource(R.mipmap.logo1); toast.show(iv);自定义 Toast 布局
/** * 显示一条 Toast * @param msg 消息内容 */ public void show(String msg,int layoutId,int rootId,Activity activity){ LayoutInflater inflater = activity.getLayoutInflater(); layout = inflater.inflate(layoutId, (ViewGroup)activity.findViewById(rootId)); layout.setLayoutParams(lp_WW); TextView title = (TextView) layout.findViewById(R.id.title); title.setText(msg); title.setTextColor(defaultTextColor); show(layout, null, null, null); }
