Toasty

来源:互联网 发布:php 图片处理类 编辑:程序博客网 时间:2024/06/09 08:58

Toasty

一个创建自定义Toast的库。正如作者所说,这个库是:
The usual Toast, but with steroids.

Toasty Android Studio编写

从Github下载,直接导入 Import Project运行
这里写图片描述

Toasty 效果:
这里写图片描述
这里写图片描述

Toasty 结构

这里写图片描述

实现在Module:toasty中,实例在Module:app中

Toasty 7中具体实例

1、To display an error Toast:

Toasty.error(yourContext, "This is an error toast.", Toast.LENGTH_SHORT, true).show();

2、To display a success Toast:

Toasty.success(yourContext, "Success!", Toast.LENGTH_SHORT, true).show();

3、To display an info Toast:

Toasty.info(yourContext, "Here is some info for you.", Toast.LENGTH_SHORT, true).show();

4、To display a warning Toast:

Toasty.warning(yourContext, "Beware of the dog.", Toast.LENGTH_SHORT, true).show();

5、To display the usual Toast:

Toasty.normal(yourContext, "Normal toast w/o icon").show();

6、To display the usual Toast with icon:

Toasty.normal(yourContext, "Normal toast w/ icon", yourIconDrawable).show();

7、You can also create your custom Toasts with the custom() method:

Toasty.custom(yourContext, "I'm a custom Toast", yourIconDrawable, textColor, tintColor, duration, withIcon, true).show();

There are variants of each method, feel free to explore this library.

前六种都是使用Toasty中custom方法实现,根本实现还是Toast。

final Toast currentToast = new Toast(context);final View toastLayout = ((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.toast_layout, null);

Toasty 实现

Toasty.java

@SuppressLint("InflateParams")public class Toasty {    private static final    @ColorInt    int DEFAULT_TEXT_COLOR = Color.parseColor("#FFFFFF");    private static final    @ColorInt    int ERROR_COLOR = Color.parseColor("#D50000");    private static final    @ColorInt    int INFO_COLOR = Color.parseColor("#3F51B5");    private static final    @ColorInt    int SUCCESS_COLOR = Color.parseColor("#388E3C");    private static final    @ColorInt    int WARNING_COLOR = Color.parseColor("#FFA900");    private static final String TOAST_TYPEFACE = "sans-serif-condensed";    private Toasty() {    }    public static    @CheckResult    Toast normal(@NonNull Context context, @NonNull String message) {        return normal(context, message, Toast.LENGTH_SHORT, null, false);    }    public static    @CheckResult    Toast normal(@NonNull Context context, @NonNull String message, Drawable icon) {        return normal(context, message, Toast.LENGTH_SHORT, icon, true);    }    public static    @CheckResult    Toast normal(@NonNull Context context, @NonNull String message, int duration) {        return normal(context, message, duration, null, false);    }    public static    @CheckResult    Toast normal(@NonNull Context context, @NonNull String message, int duration,                 Drawable icon) {        return normal(context, message, duration, icon, true);    }    public static    @CheckResult    Toast normal(@NonNull Context context, @NonNull String message, int duration,                 Drawable icon, boolean withIcon) {        return custom(context, message, icon, DEFAULT_TEXT_COLOR, duration, withIcon);    }    public static    @CheckResult    Toast warning(@NonNull Context context, @NonNull String message) {        return warning(context, message, Toast.LENGTH_SHORT, true);    }    public static    @CheckResult    Toast warning(@NonNull Context context, @NonNull String message, int duration) {        return warning(context, message, duration, true);    }    public static    @CheckResult    Toast warning(@NonNull Context context, @NonNull String message, int duration, boolean withIcon) {        return custom(context, message, ToastyUtils.getDrawable(context, R.drawable.ic_error_outline_white_48dp),                DEFAULT_TEXT_COLOR, WARNING_COLOR, duration, withIcon, true);    }    public static    @CheckResult    Toast info(@NonNull Context context, @NonNull String message) {        return info(context, message, Toast.LENGTH_SHORT, true);    }    public static    @CheckResult    Toast info(@NonNull Context context, @NonNull String message, int duration) {        return info(context, message, duration, true);    }    public static    @CheckResult    Toast info(@NonNull Context context, @NonNull String message, int duration, boolean withIcon) {        return custom(context, message, ToastyUtils.getDrawable(context, R.drawable.ic_info_outline_white_48dp),                DEFAULT_TEXT_COLOR, INFO_COLOR, duration, withIcon, true);    }    public static    @CheckResult    Toast success(@NonNull Context context, @NonNull String message) {        return success(context, message, Toast.LENGTH_SHORT, true);    }    public static    @CheckResult    Toast success(@NonNull Context context, @NonNull String message, int duration) {        return success(context, message, duration, true);    }    public static    @CheckResult    Toast success(@NonNull Context context, @NonNull String message, int duration, boolean withIcon) {        return custom(context, message, ToastyUtils.getDrawable(context, R.drawable.ic_check_white_48dp),                DEFAULT_TEXT_COLOR, SUCCESS_COLOR, duration, withIcon, true);    }    public static    @CheckResult    Toast error(@NonNull Context context, @NonNull String message) {        return error(context, message, Toast.LENGTH_SHORT, true);    }    public static    @CheckResult    Toast error(@NonNull Context context, @NonNull String message, int duration) {        return error(context, message, duration, true);    }    public static    @CheckResult    Toast error(@NonNull Context context, @NonNull String message, int duration, boolean withIcon) {        return custom(context, message, ToastyUtils.getDrawable(context, R.drawable.ic_clear_white_48dp),                DEFAULT_TEXT_COLOR, ERROR_COLOR, duration, withIcon, true);    }    public static    @CheckResult    Toast custom(@NonNull Context context, @NonNull String message, Drawable icon,                 @ColorInt int textColor, int duration, boolean withIcon) {        return custom(context, message, icon, textColor, -1, duration, withIcon, false);    }    public static    @CheckResult    Toast custom(@NonNull Context context, @NonNull String message, @DrawableRes int iconRes,                 @ColorInt int textColor, @ColorInt int tintColor, int duration,                 boolean withIcon, boolean shouldTint) {        return custom(context, message, ToastyUtils.getDrawable(context, iconRes), textColor,                tintColor, duration, withIcon, shouldTint);    }    public static    @CheckResult    Toast custom(@NonNull Context context, @NonNull String message, Drawable icon,                 @ColorInt int textColor, @ColorInt int tintColor, int duration,                 boolean withIcon, boolean shouldTint) {        final Toast currentToast = new Toast(context);        final View toastLayout = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE))                .inflate(R.layout.toast_layout, null);        final ImageView toastIcon = (ImageView) toastLayout.findViewById(R.id.toast_icon);        final TextView toastTextView = (TextView) toastLayout.findViewById(R.id.toast_text);        Drawable drawableFrame;        if (shouldTint)            drawableFrame = ToastyUtils.tint9PatchDrawableFrame(context, tintColor);        else            drawableFrame = ToastyUtils.getDrawable(context, R.drawable.toast_frame);        ToastyUtils.setBackground(toastLayout, drawableFrame);        if (withIcon) {            if (icon == null) {                throw new IllegalArgumentException("Avoid passing 'icon' as null if 'withIcon' is set to true");            }            ToastyUtils.setBackground(toastIcon, icon);        } else {            toastIcon.setVisibility(View.GONE);        }        toastTextView.setTextColor(textColor);        toastTextView.setText(message);        toastTextView.setTypeface(Typeface.create(TOAST_TYPEFACE, Typeface.NORMAL));        currentToast.setView(toastLayout);        currentToast.setDuration(duration);        return currentToast;    }}

ToastyUtils .java

final class ToastyUtils {    private ToastyUtils() {    }    static Drawable tint9PatchDrawableFrame(@NonNull Context context, @ColorInt int tintColor) {        final NinePatchDrawable toastDrawable = (NinePatchDrawable) getDrawable(context, R.drawable.toast_frame);        toastDrawable.setColorFilter(new PorterDuffColorFilter(tintColor, PorterDuff.Mode.SRC_IN));        return toastDrawable;    }    static void setBackground(@NonNull View view, Drawable drawable) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {            view.setBackground(drawable);        } else {            view.setBackgroundDrawable(drawable);        }    }    static Drawable getDrawable(@NonNull Context context, @DrawableRes int id) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {            return context.getDrawable(id);        } else {            return context.getResources().getDrawable(id);        }    }}

Toasty根本方法

Toast custom(@NonNull Context context, @NonNull String message, Drawable icon,                 @ColorInt int textColor, @ColorInt int tintColor, int duration,                 boolean withIcon, boolean shouldTint) {        final Toast currentToast = new Toast(context);        final View toastLayout = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE))                .inflate(R.layout.toast_layout, null);        final ImageView toastIcon = (ImageView) toastLayout.findViewById(R.id.toast_icon);        final TextView toastTextView = (TextView) toastLayout.findViewById(R.id.toast_text);        Drawable drawableFrame;        if (shouldTint) {            drawableFrame = ToastyUtils.tint9PatchDrawableFrame(context, tintColor);        } else {            drawableFrame = ToastyUtils.getDrawable(context, R.drawable.toast_frame);        }        ToastyUtils.setBackground(toastLayout, drawableFrame);        if (withIcon) {            if (icon == null) {                throw new IllegalArgumentException("Avoid passing 'icon' as null if 'withIcon' is set to true");            }            ToastyUtils.setBackground(toastIcon, icon);        } else {            toastIcon.setVisibility(View.GONE);        }        toastTextView.setTextColor(textColor);        toastTextView.setText(message);        toastTextView.setTypeface(Typeface.create(TOAST_TYPEFACE, Typeface.NORMAL));        currentToast.setView(toastLayout);        currentToast.setDuration(duration);        return currentToast;    }

参数2:文本提示语
参数3:左边小图标
参数4:文字颜色
参数5:背景颜色
参数6:提示时长
参数7:是否显示左边小图标
参数8:是否使用背景色

Drawable yourIconDrawable = getResources().getDrawable(R.drawable.ic_pets_white_48dp);Toasty.custom(MainActivity.this, "I'm a custom Toast", yourIconDrawable, Color.GREEN, Color.CYAN, 3000, true, true).show();
0 0
原创粉丝点击