自定义Toast

修改原因:
1、防止多次点击Toast,在界面已经跳转但是Toast还在显示的bug;
2、区分正常与错误的状态,设置不同的背景色。

public class ToastManager {
    private static Toast toast = null;
//
    private static Toast getToast(String msg){
        if (toast==null){
            synchronized (toast){
                if (toast==null){
                //该处的Context取自Application自定义方法
                    Context context =SystemApplication.getContext();

                    toast = Toast.makeText(context, msg, Toast.LENGTH_LONG);
                }
            }
        }else{
            toast.setText(msg);
        }
        toast.setGravity(Gravity.BOTTOM, 0, 200);
        return toast;
    }
    public static void showError(String msg) {
        getToast(msg);
        View view = toast.getView();
        TextView tv = (TextView) view.findViewById(android.R.id.message);
        view.setBackgroundColor(0xb0000000);
        tv.setSingleLine(true);
        tv.setTextColor(Color.parseColor("#FFFFFF"));
        // tv.setTextSize();
        toast.show();
    }

    public static void show(String msg) {
        getToast(msg);
        View view = toast.getView();
        TextView tv = (TextView) view.findViewById(android.R.id.message);
        tv.setGravity(Gravity.CENTER);
        //view.setBackgroundColor(0xb0000000);
        tv.setSingleLine(false);
        tv.setTextColor(Color.parseColor("#FFFFFF"));
//      tv.setTextColor(context.getResources().getColor(R.color.font_color));
        // tv.setTextSize();
        toast.show();
    }

    public void cancle() {
        if (toast != null) {
            toast.cancel();
        }

    }
}

使用也非常简单:

ToastManager.showError("异常内容");

以上关于Toast设置单例模式,来自郭神的创意,为了形象生动,此处再借鉴两张效果图:

单例前:

这里写图片描述

单例后:

这里写图片描述

以上内容总结自大神demo及郭神创意,暂时无状态效果图。欢迎吐槽!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值