自定义吐司Toast小进阶

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

效果图

自定义吐司Toast小进阶_第1张图片

自定义过程中也发生了这样那样的问题,具体是什么就不啰嗦了,之后参考了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;
        }
    }

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

链接一

链接二

你可能感兴趣的:(自定义吐司Toast小进阶)