自定义吐司Toast小进阶

Toast是Android中用来显示显示信息非常常用的一种方法,相信很多同学比仅仅满足于系统自带的吐司,于是乎就有自定义吐司这种需求了。
之前写了一篇我们的吐司Toast,全是吐的文字或者图片是写死的,介绍了Toast的位置。那么我发现很多带图片的我也想用Toast来显示。比如登录成功失败,显示个笑脸哭脸了什么的。

效果图

这里写图片描述

自定义过程中也发生了这样那样的问题,具体是什么就不啰嗦了,之后参考了Toast的源码来定义了一个。而且你会发现这个Toast不会发生我们用自带Toast的一种情况就是必须等前一个Toast消失了下一个才显示,当你多次快速点击时候会发现Toast不消失了,这里直接实现静态切换,Maybe 这也算稍微进阶点了吧。
直接贴源码:

   /**
     * customize short toast.
     *
     * @param context
     * @param message
     * @param resId   the resource id for imageView
     */
    public static void showKevinToast(Context context, String message, int resId) {
        if (mKevinShortToast == null) {
            mKevinShortToast = new Toast(context);
        }
        LayoutInflater inflate = (LayoutInflater)
                context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View v = inflate.inflate(R.layout.layout_tip_toast, null);
        mKevinShortToast.setView(v);
        TextView tv = (TextView) v.findViewById(R.id.toast_text);
        ImageView iv = (ImageView) v.findViewById(R.id.toast_image);
        tv.setText(message);
        iv.setImageResource(resId);
        mKevinShortToast.setDuration(Toast.LENGTH_SHORT);
        mKevinShortToast.show();
    }

这里面也写了一些平时常用Toast的时候的简化,不用每次都写context,duration,show了,直接写showToast("Android")即可。


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_one:
                showToast("Hello", R.drawable.ic_moto);
                break;
            case R.id.btn_two:
                showToast("Android", R.drawable.ic_rocket);
                break;
            case R.id.btn_three:
                showToast("Android", R.drawable.ic_ship);
                break;
            case R.id.btn_four:
                showToast2("Kevin\t" + ++count, R.drawable.ic_jewel);
                break;
        }
    }

有需要的点击下面链接下载:

链接一
链接二
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值