精华内容
下载资源
问答
  • toasty的使用以及简单封装:https://www.jianshu.com/p/91d4b6d03d6d https://github.com/GrenderG/Toasty ...其中StyleableToast可以实现Toasty的样式,更灵活,我们可以下载Toasty的源码拿到其的图片素材。 ...

    效果演示

    在这里插入图片描述

    添加依赖

    1,在Project的build.gradle文件中添加:

    allprojects {
    	repositories {
    		...
    		maven { url "https://jitpack.io" }
    	}
    }
    

    2,在app的build.gradle文件中添加:

    dependencies {
    	...
    	compile ''com.github.GrenderG:Toasty:1.1.5''
    }
    

    3,自定义旧版本工具类如下:

    public class ToastUtils {
    
        /***
         *
         * 弹出成功消息*   
         * @param text 需要显示的消息   
         * @param isShowIcon 是否需要显示图标 默认显示
         *
         */
        public static void toastSuccess(@NonNull String text, @NonNull Boolean isShowIcon) {
            Toasty.success(MyApplication.getInstance(), text, Toast.LENGTH_SHORT, isShowIcon).show();
        }
    
        /***弹出错误消息*   
         * *@param text 需要显示的消息   
         * *@param isShowIcon 是否需要显示图标 默认显示*
         * */
    
        public static void toastError(@NonNull String text, @NonNull Boolean isShowIcon) {
            Toasty.error(MyApplication.getInstance(), text, Toast.LENGTH_SHORT, isShowIcon).show();
        }
    
         /***弹出info消息*   
          * @param text 需要显示的消息*
          * @param isShowIcon 是否需要显示图标 默认显示*
         */
    
        public static void toastInfo(@NonNull String text, @NonNull Boolean isShowIcon) {
            Toasty.info(MyApplication.getInstance(), text, Toast.LENGTH_SHORT, isShowIcon).show();
        }
    
        /***弹出警告消息*   
         *@param text 需要显示的消息   
         *@param isShowIcon 是否需要显示图标 默认显示*
         */
    
        public static void toastWarn(@NonNull String text, @NonNull Boolean isShowIcon) {
            Toasty.warning(MyApplication.getInstance(), text, Toast.LENGTH_SHORT, isShowIcon).show();
        }
    
        /***
         * 弹出一般的消息
         * @param text
         */
        public static void toastNormal(@NonNull String text) {
            Toasty.normal(MyApplication.getInstance(), text).show();
        }
    
        /***
         * 弹出一般的带icon的消息
         * @param text
         * @param icon  图片id
         */
        public static void toastNormalWithIcon(@NonNull String text, @NonNull int icon) {
            Toasty.normal(MyApplication.getInstance(), text, ContextCompat.getDrawable(MyApplication.getInstance(), icon) ).show();
        }
    
    
        /***
         *
         * @param text 文本
         * @param icon 图标id
         * @param isShowIcon 是否显示图标
         * @param textColor 文本的颜色
         * @param color 设置Toast的颜色
         * @param isShowBackColor 是否应用设置的颜色,如果为false代表不应用,那么依旧显示的是Normal时的颜色
         */
        public static void toastCustorm(@NonNull String text,@NonNull int icon, @NonNull Boolean isShowIcon, @NonNull int textColor,@NonNull int color,@NonNull Boolean isShowBackColor) {
            Toasty.custom(MyApplication.getInstance(), text, ContextCompat.getDrawable(MyApplication.getInstance(), icon),textColor, color, Toast.LENGTH_SHORT, isShowIcon,
                    isShowBackColor).show();
        }
    }
    

    目前GitHub上最新版本为1.3.0,因为最新版本更改了Toast里面的默认字体大小,显得有点太大,不太好看,虽然也可以很方便的额外修改字体大小,字体样式但是毕竟要多写代码比较麻烦,个人感觉旧版本的字体大小刚好合适,如果想使用最新版本,那么接着往下看,因为新版本和旧版本的api有一点差别。

    如果对旧版本字体大小和字体样式没有特定需要,那么使用旧版本即可。

    修改版本号为最新的1.3.0:

    'com.github.GrenderG:Toasty:1.3.0'
    

    3,定义新版本工具类如下:

    public class ToastUtils {
    
        /***
         *
         * 弹出成功消息*   
         * @param text 需要显示的消息   
         * @param isShowIcon 是否需要显示图标 默认显示
         *
         */
        public static void toastSuccess(@NonNull String text, @NonNull Boolean isShowIcon) {
            Toasty.success(MyApplication.getInstance(), text, Toast.LENGTH_SHORT, isShowIcon).show();
        }
    
        /***弹出错误消息*   
         * *@param text 需要显示的消息   
         * *@param isShowIcon 是否需要显示图标 默认显示*
         * */
    
        public static void toastError(@NonNull String text, @NonNull Boolean isShowIcon) {
            Toasty.error(MyApplication.getInstance(), text, Toast.LENGTH_SHORT, isShowIcon).show();
        }
    
         /***弹出info消息*   
          * @param text 需要显示的消息*
          * @param isShowIcon 是否需要显示图标 默认显示*
         */
    
        public static void toastInfo(@NonNull String text, @NonNull Boolean isShowIcon) {
            Toasty.info(MyApplication.getInstance(), text, Toast.LENGTH_SHORT, isShowIcon).show();
        }
    
        /***弹出警告消息*   
         *@param text 需要显示的消息   
         *@param isShowIcon 是否需要显示图标 默认显示*
         */
    
        public static void toastWarn(@NonNull String text, @NonNull Boolean isShowIcon) {
            Toasty.warning(MyApplication.getInstance(), text, Toast.LENGTH_SHORT, isShowIcon).show();
        }
    
        /***
         * 弹出一般的消息
         * @param text
         */
        public static void toastNormal(@NonNull String text) {
            Toasty.normal(MyApplication.getInstance(), text).show();
        }
    
        /***
         * 弹出一般的带icon的消息
         * @param text
         * @param icon  图片id
         */
        public static void toastNormalWithIcon(@NonNull String text, @NonNull int icon) {
            Toasty.normal(MyApplication.getInstance(), text, ContextCompat.getDrawable(MyApplication.getInstance(), icon) ).show();
        }
    
    
        /***
         *
         * @param text 文本
         * @param icon 图标id
         * @param isShowIcon 是否显示图标
         * @param color 设置Toast的颜色
         * @param isShowBackColor 是否应用设置的颜色,如果为false代表不应用,那么依旧显示的是Normal时的颜色
         */
        public static void toastCustorm(@NonNull String text,@NonNull int icon, @NonNull Boolean isShowIcon, @NonNull int color,@NonNull Boolean isShowBackColor) {
            Toasty.custom(MyApplication.getInstance(), text, ContextCompat.getDrawable(MyApplication.getInstance(), icon), color, Toast.LENGTH_SHORT, isShowIcon,
                    isShowBackColor).show();
        }
    }
    

    4,对应的MyApplication代码如下:

    public class MyApplication extends Application {
    
        private static MyApplication instance;
    
        @Override
        public void onCreate() {
            super.onCreate();
            instance= this;
    
    //        Toasty.Config.getInstance()
    //                .setTextColor(Color.GREEN)  // 文字颜色
    //                .setToastTypeface(Typeface.SANS_SERIF) // 设置内置字体
    //                .setToastTypeface(Typeface.createFromAsset(getAssets(), "PCap Terminal.otf"))  // 设置其他字体
    //                .setTextSize(14) // 单位sp
    //                .apply(); // required
    
        }
    
        public static MyApplication getInstance(){
            return instance;
        }
    }
    

    如果想要修改全局的弹出的Toast的文字颜色,字体样式,字体大小等可以在MyApplication中添加上面注释掉的代码,此时会全局生效,如果只想更改某次弹出的Toast的样式的话,可以这样设置:

    Toasty.Config.getInstance()
                 .setTextColor(Color.GREEN)
                 .setToastTypeface(Typeface.createFromAsset(getAssets(), "PCap Terminal.otf"))
                 .apply();
    ToastUtils.toastCustorm("点击了添加按钮3333!",R.drawable.ic_arrow_back_white,false, Color.RED,true);
    Toasty.Config.reset(); // 该句代表重置配置,即恢复默认,如果不写该句,上面的配置会全局生效,直到某次调用reset终止。
    

    注意旧版本中不支持以上更改字体大小和字体样式的代码,但旧版本中支持修改文本颜色,且修改的操作是封装在Custorm方法之中的,详见旧版本工具类中的最后一个方法定义。

    另外再推荐一个支持更多属性的第三方Toast库:https://github.com/Muddz/StyleableToast ,如果这个满足不了你的需求,可以尝试使用该库。

    优化的Toast工具类,去除重复弹出,直接改变文本

    public class ToastUtil {
        private static boolean isShow = true;//默认显示
        private static Toast mToast = null;//全局唯一的Toast
    
        /*private控制不应该被实例化*/
        private ToastUtil() {
            throw new UnsupportedOperationException("不能被实例化");
        }
    
        /**
         * 全局控制是否显示Toast
         *
         * @param isShowToast
         */
        public static void controlShow(boolean isShowToast) {
            isShow = isShowToast;
        }
    
        /**
         * 取消Toast显示
         */
        public void cancelToast() {
            if (isShow && mToast != null) {
                mToast.cancel();
            }
        }
    
        /**
         * 短时间显示Toast
         *
         * @param context
         * @param message
         */
        public static void showShort(Context context, CharSequence message) {
            if (isShow) {
                if (mToast == null) {
                    mToast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
                } else {
                    mToast.setText(message);
                }
                mToast.show();
            }
        }
    
        /**
         * 短时间显示Toast
         *
         * @param context
         * @param resId   资源ID:getResources().getString(R.string.xxxxxx);
         */
        public static void showShort(Context context, int resId) {
            if (isShow) {
                if (mToast == null) {
                    mToast = Toast.makeText(context, resId, Toast.LENGTH_SHORT);
                } else {
                    mToast.setText(resId);
                }
                mToast.show();
            }
        }
    
        /**
         * 长时间显示Toast
         *
         * @param context
         * @param message
         */
        public static void showLong(Context context, CharSequence message) {
            if (isShow) {
                if (mToast == null) {
                    mToast = Toast.makeText(context, message, Toast.LENGTH_LONG);
                } else {
                    mToast.setText(message);
                }
                mToast.show();
            }
        }
    
        /**
         * 长时间显示Toast
         *
         * @param context
         * @param resId   资源ID:getResources().getString(R.string.xxxxxx);
         */
        public static void showLong(Context context, int resId) {
            if (isShow) {
                if (mToast == null) {
                    mToast = Toast.makeText(context, resId, Toast.LENGTH_LONG);
                } else {
                    mToast.setText(resId);
                }
                mToast.show();
            }
        }
    
        /**
         * 自定义显示Toast时间
         *
         * @param context
         * @param message
         * @param duration 单位:毫秒
         */
        public static void show(Context context, CharSequence message, int duration) {
            if (isShow) {
                if (mToast == null) {
                    mToast = Toast.makeText(context, message, duration);
                } else {
                    mToast.setText(message);
                }
                mToast.show();
            }
        }
    
        /**
         * 自定义显示Toast时间
         *
         * @param context
         * @param resId    资源ID:getResources().getString(R.string.xxxxxx);
         * @param duration 单位:毫秒
         */
        public static void show(Context context, int resId, int duration) {
            if (isShow) {
                if (mToast == null) {
                    mToast = Toast.makeText(context, resId, duration);
                } else {
                    mToast.setText(resId);
                }
                mToast.show();
            }
        }
    
        /**
         * 自定义Toast的View
         *
         * @param context
         * @param message
         * @param duration 单位:毫秒
         * @param view     显示自己的View
         */
        public static void customToastView(Context context, CharSequence message, int duration, View view) {
            if (isShow) {
                if (mToast == null) {
                    mToast = Toast.makeText(context, message, duration);
                } else {
                    mToast.setText(message);
                }
                if (view != null) {
                    mToast.setView(view);
                }
                mToast.show();
            }
        }
    
        /**
         * 自定义Toast的位置
         *
         * @param context
         * @param message
         * @param duration 单位:毫秒
         * @param gravity
         * @param xOffset
         * @param yOffset
         */
        public static void customToastGravity(Context context, CharSequence message, int duration, int gravity, int xOffset, int yOffset) {
            if (isShow) {
                if (mToast == null) {
                    mToast = Toast.makeText(context, message, duration);
                } else {
                    mToast.setText(message);
                }
                mToast.setGravity(gravity, xOffset, yOffset);
                mToast.show();
            }
        }
    
        /**
         * 自定义带图片和文字的Toast,最终的效果就是上面是图片,下面是文字
         *
         * @param context
         * @param message
         * @param iconResId 图片的资源id,如:R.drawable.icon
         * @param duration
         * @param gravity
         * @param xOffset
         * @param yOffset
         */
        public static void showToastWithImageAndText(Context context, CharSequence message, int iconResId, int duration, int gravity, int xOffset, int yOffset) {
            if (isShow) {
                if (mToast == null) {
                    mToast = Toast.makeText(context, message, duration);
                } else {
                    mToast.setText(message);
                }
                mToast.setGravity(gravity, xOffset, yOffset);
                LinearLayout toastView = (LinearLayout) mToast.getView();
                ImageView imageView = new ImageView(context);
                imageView.setImageResource(iconResId);
                toastView.addView(imageView, 0);
                mToast.show();
            }
        }
    
        /**
         * 自定义Toast,针对类型CharSequence
         *
         * @param context
         * @param message
         * @param duration
         * @param view
         * @param isGravity        true,表示后面的三个布局参数生效,false,表示不生效
         * @param gravity
         * @param xOffset
         * @param yOffset
         * @param isMargin         true,表示后面的两个参数生效,false,表示不生效
         * @param horizontalMargin
         * @param verticalMargin
         */
        public static void customToastAll(Context context, CharSequence message, int duration, View view, boolean isGravity, int gravity, int xOffset, int yOffset, boolean isMargin, float horizontalMargin, float verticalMargin) {
            if (isShow) {
                if (mToast == null) {
                    mToast = Toast.makeText(context, message, duration);
                } else {
                    mToast.setText(message);
                }
                if (view != null) {
                    mToast.setView(view);
                }
                if (isMargin) {
                    mToast.setMargin(horizontalMargin, verticalMargin);
                }
                if (isGravity) {
                    mToast.setGravity(gravity, xOffset, yOffset);
                }
                mToast.show();
            }
        }
    
        /**
         * 自定义Toast,针对类型resId
         *
         * @param context
         * @param resId
         * @param duration
         * @param view             :应该是一个布局,布局中包含了自己设置好的内容
         * @param isGravity        true,表示后面的三个布局参数生效,false,表示不生效
         * @param gravity
         * @param xOffset
         * @param yOffset
         * @param isMargin         true,表示后面的两个参数生效,false,表示不生效
         * @param horizontalMargin
         * @param verticalMargin
         */
        public static void customToastAll(Context context, int resId, int duration, View view, boolean isGravity, int gravity, int xOffset, int yOffset, boolean isMargin, float horizontalMargin, float verticalMargin) {
            if (isShow) {
                if (mToast == null) {
                    mToast = Toast.makeText(context, resId, duration);
                } else {
                    mToast.setText(resId);
                }
                if (view != null) {
                    mToast.setView(view);
                }
                if (isMargin) {
                    mToast.setMargin(horizontalMargin, verticalMargin);
                }
                if (isGravity) {
                    mToast.setGravity(gravity, xOffset, yOffset);
                }
                mToast.show();
            }
        }
    }
    
    展开全文
  • Toasty

    2019-05-13 10:46:18
    Toasty 初始化 ToastyInitConfigure package application; import android.graphics.Typeface; import widget.toast.Toasty; /** * Created on 2019/5/13. * * @author 郑少鹏 * @desc ...

    Toasty

    初始化

    ToastyInitConfigure

    package application;
    
    import android.graphics.Typeface;
    
    import widget.toast.Toasty;
    
    /**
     * Created on 2019/5/13.
     *
     * @author 郑少鹏
     * @desc Toasty初始化配置
     */
    class ToastyInitConfigure {
        static void initToasty() {
            Toasty.Config.getInstance()
                    // optional (apply textColor also to the icon)
                    .tintIcon(false)
                    // optional
                    .setToastTypeface(Typeface.SANS_SERIF)
                    // optional
                    .setTextSize(12)
                    // optional (prevents several Toasties from queuing)
                    .allowQueue(true)
                    // required
                    .apply();
        }
    }
    

    Application之onCreate()

    ToastyInitConfigure.initToasty();
    

    使用

    官方文档

    Toasty

    package widget.toast;
    
    import android.annotation.SuppressLint;
    import android.content.Context;
    import android.graphics.Typeface;
    import android.graphics.drawable.Drawable;
    import android.util.TypedValue;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.ImageView;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import androidx.annotation.CheckResult;
    import androidx.annotation.ColorInt;
    import androidx.annotation.ColorRes;
    import androidx.annotation.DrawableRes;
    import androidx.annotation.NonNull;
    import androidx.annotation.StringRes;
    
    import com.lalala.lalala.R;
    
    /**
     * @decs: Toasty
     * @author: 郑少鹏
     * @date: 2019/5/13 10:32
     */
    public class Toasty {
        private static final Typeface LOADED_TOAST_TYPEFACE = Typeface.create("sans-serif-condensed", Typeface.NORMAL);
        private static Typeface currentTypeface = LOADED_TOAST_TYPEFACE;
        /**
         * in SP
         */
        private static int textSize = 16;
        private static boolean tintIcon = true;
        private static boolean allowQueue = true;
        private static Toast lastToast = null;
        public static final int LENGTH_SHORT = Toast.LENGTH_SHORT;
        public static final int LENGTH_LONG = Toast.LENGTH_LONG;
    
        private Toasty() {
            // avoiding instantiation
        }
    
        @CheckResult
        public static Toast normal(@NonNull Context context, @StringRes int message) {
            return normal(context, context.getString(message), Toast.LENGTH_SHORT, null, false);
        }
    
        @CheckResult
        public static Toast normal(@NonNull Context context, @NonNull CharSequence message) {
            return normal(context, message, Toast.LENGTH_SHORT, null, false);
        }
    
        @CheckResult
        public static Toast normal(@NonNull Context context, @StringRes int message, Drawable icon) {
            return normal(context, context.getString(message), Toast.LENGTH_SHORT, icon, true);
        }
    
        @CheckResult
        public static Toast normal(@NonNull Context context, @NonNull CharSequence message, Drawable icon) {
            return normal(context, message, Toast.LENGTH_SHORT, icon, true);
        }
    
        @CheckResult
        public static Toast normal(@NonNull Context context, @StringRes int message, int duration) {
            return normal(context, context.getString(message), duration, null, false);
        }
    
        @CheckResult
        public static Toast normal(@NonNull Context context, @NonNull CharSequence message, int duration) {
            return normal(context, message, duration, null, false);
        }
    
        @CheckResult
        public static Toast normal(@NonNull Context context, @StringRes int message, int duration,
                                   Drawable icon) {
            return normal(context, context.getString(message), duration, icon, true);
        }
    
        @CheckResult
        public static Toast normal(@NonNull Context context, @NonNull CharSequence message, int duration, Drawable icon) {
            return normal(context, message, duration, icon, true);
        }
    
        @CheckResult
        public static Toast normal(@NonNull Context context, @StringRes int message, int duration, Drawable icon, boolean withIcon) {
            return custom(context, context.getString(message), icon, ToastyUtils.getColor(context, R.color.normalColor),
                    ToastyUtils.getColor(context, R.color.background), duration, withIcon, true);
        }
    
        @CheckResult
        private static Toast normal(@NonNull Context context, @NonNull CharSequence message, int duration, Drawable icon, boolean withIcon) {
            return custom(context, message, icon, ToastyUtils.getColor(context, R.color.normalColor),
                    ToastyUtils.getColor(context, R.color.background), duration, withIcon, true);
        }
    
        @CheckResult
        public static Toast warning(@NonNull Context context, @StringRes int message) {
            return warning(context, context.getString(message), Toast.LENGTH_SHORT, true);
        }
    
        @CheckResult
        public static Toast warning(@NonNull Context context, @NonNull CharSequence message) {
            return warning(context, message, Toast.LENGTH_SHORT, true);
        }
    
        @CheckResult
        public static Toast warning(@NonNull Context context, @StringRes int message, int duration) {
            return warning(context, context.getString(message), duration, true);
        }
    
        @CheckResult
        public static Toast warning(@NonNull Context context, @NonNull CharSequence message, int duration) {
            return warning(context, message, duration, true);
        }
    
        @CheckResult
        public static Toast warning(@NonNull Context context, @StringRes int message, int duration, boolean withIcon) {
            return custom(context, context.getString(message), ToastyUtils.getDrawable(context, R.drawable.ic_error_outline_white_24dp),
                    ToastyUtils.getColor(context, R.color.warningColor), ToastyUtils.getColor(context, R.color.background),
                    duration, withIcon, true);
        }
    
        @CheckResult
        public static Toast warning(@NonNull Context context, @NonNull CharSequence message, int duration, boolean withIcon) {
            return custom(context, message, ToastyUtils.getDrawable(context, R.drawable.ic_error_outline_white_24dp),
                    ToastyUtils.getColor(context, R.color.warningColor), ToastyUtils.getColor(context, R.color.background),
                    duration, withIcon, true);
        }
    
        @CheckResult
        public static Toast info(@NonNull Context context, @StringRes int message) {
            return info(context, context.getString(message), Toast.LENGTH_SHORT, true);
        }
    
        @CheckResult
        public static Toast info(@NonNull Context context, @NonNull CharSequence message) {
            return info(context, message, Toast.LENGTH_SHORT, true);
        }
    
        @CheckResult
        public static Toast info(@NonNull Context context, @StringRes int message, int duration) {
            return info(context, context.getString(message), duration, true);
        }
    
        @CheckResult
        public static Toast info(@NonNull Context context, @NonNull CharSequence message, int duration) {
            return info(context, message, duration, true);
        }
    
        @CheckResult
        public static Toast info(@NonNull Context context, @StringRes int message, int duration, boolean withIcon) {
            return custom(context, context.getString(message), ToastyUtils.getDrawable(context, R.drawable.ic_info_outline_white_24dp),
                    ToastyUtils.getColor(context, R.color.infoColor), ToastyUtils.getColor(context, R.color.background),
                    duration, withIcon, true);
        }
    
        @CheckResult
        private static Toast info(@NonNull Context context, @NonNull CharSequence message, int duration, boolean withIcon) {
            return custom(context, message, ToastyUtils.getDrawable(context, R.drawable.ic_info_outline_white_24dp),
                    ToastyUtils.getColor(context, R.color.infoColor), ToastyUtils.getColor(context, R.color.background),
                    duration, withIcon, true);
        }
    
        @CheckResult
        public static Toast success(@NonNull Context context, @StringRes int message) {
            return success(context, context.getString(message), Toast.LENGTH_SHORT, true);
        }
    
        @CheckResult
        public static Toast success(@NonNull Context context, @NonNull CharSequence message) {
            return success(context, message, Toast.LENGTH_SHORT, true);
        }
    
        @CheckResult
        public static Toast success(@NonNull Context context, @StringRes int message, int duration) {
            return success(context, context.getString(message), duration, true);
        }
    
        @CheckResult
        public static Toast success(@NonNull Context context, @NonNull CharSequence message, int duration) {
            return success(context, message, duration, true);
        }
    
        @CheckResult
        public static Toast success(@NonNull Context context, @StringRes int message, int duration, boolean withIcon) {
            return custom(context, context.getString(message), ToastyUtils.getDrawable(context, R.drawable.ic_check_white_24dp),
                    ToastyUtils.getColor(context, R.color.successColor), ToastyUtils.getColor(context, R.color.background),
                    duration, withIcon, true);
        }
    
        @CheckResult
        public static Toast success(@NonNull Context context, @NonNull CharSequence message, int duration, boolean withIcon) {
            return custom(context, message, ToastyUtils.getDrawable(context, R.drawable.ic_check_white_24dp),
                    ToastyUtils.getColor(context, R.color.successColor), ToastyUtils.getColor(context, R.color.background),
                    duration, withIcon, true);
        }
    
        @CheckResult
        public static Toast error(@NonNull Context context, @StringRes int message) {
            return error(context, context.getString(message), Toast.LENGTH_SHORT, true);
        }
    
        @CheckResult
        public static Toast error(@NonNull Context context, @NonNull CharSequence message) {
            return error(context, message, Toast.LENGTH_SHORT, true);
        }
    
        @CheckResult
        public static Toast error(@NonNull Context context, @StringRes int message, int duration) {
            return error(context, context.getString(message), duration, true);
        }
    
        @CheckResult
        public static Toast error(@NonNull Context context, @NonNull CharSequence message, int duration) {
            return error(context, message, duration, true);
        }
    
        @CheckResult
        public static Toast error(@NonNull Context context, @StringRes int message, int duration, boolean withIcon) {
            return custom(context, context.getString(message), ToastyUtils.getDrawable(context, R.drawable.ic_clear_white_24dp),
                    ToastyUtils.getColor(context, R.color.errorColor), ToastyUtils.getColor(context, R.color.background),
                    duration, withIcon, true);
        }
    
        @CheckResult
        public static Toast error(@NonNull Context context, @NonNull CharSequence message, int duration, boolean withIcon) {
            return custom(context, message, ToastyUtils.getDrawable(context, R.drawable.ic_clear_white_24dp),
                    ToastyUtils.getColor(context, R.color.errorColor), ToastyUtils.getColor(context, R.color.background),
                    duration, withIcon, true);
        }
    
        @CheckResult
        public static Toast custom(@NonNull Context context, @StringRes int message, Drawable icon, int duration, boolean withIcon) {
            return custom(context, context.getString(message), icon, -1, ToastyUtils.getColor(context, R.color.background),
                    duration, withIcon, false);
        }
    
        @CheckResult
        public static Toast custom(@NonNull Context context, @NonNull CharSequence message, Drawable icon, int duration, boolean withIcon) {
            return custom(context, message, icon, -1, ToastyUtils.getColor(context, R.color.background),
                    duration, withIcon, false);
        }
    
        @CheckResult
        public static Toast custom(@NonNull Context context, @StringRes int message, @DrawableRes int iconRes,
                                   @ColorRes int tintColorRes, int duration,
                                   boolean withIcon, boolean shouldTint) {
            return custom(context, context.getString(message), ToastyUtils.getDrawable(context, iconRes),
                    ToastyUtils.getColor(context, tintColorRes), ToastyUtils.getColor(context, R.color.background),
                    duration, withIcon, shouldTint);
        }
    
        @CheckResult
        public static Toast custom(@NonNull Context context, @NonNull CharSequence message, @DrawableRes int iconRes,
                                   @ColorRes int tintColorRes, int duration,
                                   boolean withIcon, boolean shouldTint) {
            return custom(context, message, ToastyUtils.getDrawable(context, iconRes),
                    ToastyUtils.getColor(context, tintColorRes), ToastyUtils.getColor(context, R.color.background),
                    duration, withIcon, shouldTint);
        }
    
        @CheckResult
        public static Toast custom(@NonNull Context context, @StringRes int message, Drawable icon,
                                   @ColorRes int tintColorRes, int duration,
                                   boolean withIcon, boolean shouldTint) {
            return custom(context, context.getString(message), icon, ToastyUtils.getColor(context, tintColorRes),
                    ToastyUtils.getColor(context, R.color.background), duration, withIcon, shouldTint);
        }
    
        @CheckResult
        public static Toast custom(@NonNull Context context, @StringRes int message, Drawable icon,
                                   @ColorRes int tintColorRes, @ColorRes int textColorRes, int duration,
                                   boolean withIcon, boolean shouldTint) {
            return custom(context, context.getString(message), icon, ToastyUtils.getColor(context, tintColorRes),
                    ToastyUtils.getColor(context, textColorRes), duration, withIcon, shouldTint);
        }
    
        @CheckResult
        private static Toast custom(@NonNull Context context, @NonNull CharSequence message, Drawable icon,
                                    @ColorInt int tintColor, @ColorInt int textColor, int duration,
                                    boolean withIcon, boolean shouldTint) {
            @SuppressLint("ShowToast") final Toast currentToast = Toast.makeText(context, "", duration);
            @SuppressLint("InflateParams") final View toastLayout = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE))
                    .inflate(R.layout.toast_layout, null);
            final ImageView toastImageView = toastLayout.findViewById(R.id.toastLayoutIv);
            final TextView toastTextView = toastLayout.findViewById(R.id.toastLayoutTv);
            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(toastImageView, tintIcon ? ToastyUtils.tintIcon(icon, textColor) : icon);
            } else {
                toastImageView.setVisibility(View.GONE);
            }
            toastTextView.setText(message);
            toastTextView.setTextColor(textColor);
            toastTextView.setTypeface(currentTypeface);
            toastTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize);
            currentToast.setView(toastLayout);
            if (!allowQueue) {
                if (lastToast != null) {
                    lastToast.cancel();
                    lastToast = currentToast;
                }
            }
            return currentToast;
        }
    
        public static class Config {
            private Typeface typeface = Toasty.currentTypeface;
            private int textSize = Toasty.textSize;
            private boolean tintIcon = Toasty.tintIcon;
            private boolean allowQueue = true;
    
            private Config() {
                // avoiding instantiation
            }
    
            @CheckResult
            public static Config getInstance() {
                return new Config();
            }
    
            public static void reset() {
                Toasty.currentTypeface = LOADED_TOAST_TYPEFACE;
                Toasty.textSize = 16;
                Toasty.tintIcon = true;
                Toasty.allowQueue = true;
            }
    
            @CheckResult
            public Config setToastTypeface(@NonNull Typeface typeface) {
                this.typeface = typeface;
                return this;
            }
    
            @CheckResult
            public Config setTextSize(int sizeInSp) {
                this.textSize = sizeInSp;
                return this;
            }
    
            @CheckResult
            public Config tintIcon(boolean tintIcon) {
                this.tintIcon = tintIcon;
                return this;
            }
    
            @CheckResult
            public Config allowQueue(boolean allowQueue) {
                this.allowQueue = allowQueue;
                return this;
            }
    
            public void apply() {
                Toasty.currentTypeface = typeface;
                Toasty.textSize = textSize;
                Toasty.tintIcon = tintIcon;
                Toasty.allowQueue = allowQueue;
            }
        }
    }
    

    ToastyUtils

    package widget.toast;
    
    import android.content.Context;
    import android.graphics.PorterDuff;
    import android.graphics.drawable.Drawable;
    import android.graphics.drawable.NinePatchDrawable;
    import android.os.Build;
    import android.view.View;
    
    import androidx.annotation.ColorInt;
    import androidx.annotation.ColorRes;
    import androidx.annotation.DrawableRes;
    import androidx.annotation.NonNull;
    import androidx.appcompat.content.res.AppCompatResources;
    import androidx.core.content.ContextCompat;
    
    import com.lalala.lalala.R;
    
    /**
     * @decs: ToastyUtils
     * @author: 郑少鹏
     * @date: 2019/5/13 10:33
     */
    final class ToastyUtils {
        private ToastyUtils() {
        }
    
        static Drawable tintIcon(@NonNull Drawable drawable, @ColorInt int tintColor) {
            drawable.setColorFilter(tintColor, PorterDuff.Mode.SRC_IN);
            return drawable;
        }
    
        static Drawable tint9PatchDrawableFrame(@NonNull Context context, @ColorInt int tintColor) {
            final NinePatchDrawable toastDrawable = (NinePatchDrawable) getDrawable(context, R.drawable.toast_frame);
            return tintIcon(toastDrawable, tintColor);
        }
    
        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) {
            return AppCompatResources.getDrawable(context, id);
        }
    
        static int getColor(@NonNull Context context, @ColorRes int color) {
            return ContextCompat.getColor(context, color);
        }
    }
    

    toast_layout.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        tools:ignore="UseCompoundDrawables">
    
        <ImageView
            android:id="@+id/toastLayoutIv"
            android:layout_width="@dimen/dp_18"
            android:layout_height="@dimen/dp_18"
            android:layout_marginEnd="@dimen/dp_8"
            android:contentDescription="@string/toDo"
            tools:src="@mipmap/ic_launcher" />
    
        <TextView
            android:id="@+id/toastLayoutTv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:text="提示" />
    </LinearLayout>
    

    colors.xml

     <color name="toastInfo">#698EB5</color>
    <color name="toastError">#FF5F00</color>
    <color name="toastSuccess">#A5DC86</color>
    <color name="toastNormal">#353A3E</color>
    <color name="toastWarning">#F8BB86</color>
    

    主代码

    Toasty.normal(this, xxx).show();
    Toasty.warning(this, xxx, Toast.LENGTH_SHORT, true).show();
    Toasty.sucess(this, xxx, Toast.LENGTH_SHORT, true).show();
    Toasty.error(this, xxx, Toast.LENGTH_SHORT, true).show();
    
    展开全文
  • Android第三方库Toasty--binbinYang

    千次阅读 2017-04-21 17:54:46
    今天同事推荐了这么一个,用到了项目中  https://github.com/GrenderG/Toasty 先上效果图 一、导入gradle添加依赖 1.将它添加到您的根build.gradle文件 allprojects { repositories { ... maven...

    今天同事推荐了这么一个库,用到了项目中

     https://github.com/GrenderG/Toasty


    先上效果图



    一、导入gradle添加依赖

    1.将它添加到您的根build.gradle文件

    allprojects {
    	repositories {
    		...
    		maven { url "https://jitpack.io" }
    	}
    }

    2.将其添加到你的项目build.gradle文件

    dependencies {
    	...
    	compile 'com.github.GrenderG:Toasty:1.1.5'
    }

    使用

    /** 
        *错误Toast: 
        */  
       private void showError() {  
           Toasty.error(this,mBtn1.getText().toString(), Toast.LENGTH_SHORT,true).show();  
       }  
      
       /** 
        *成功Toast: 
        */  
       private void showSuccess() {  
           Toasty.success(this,mBtn2.getText().toString(),Toast.LENGTH_SHORT,true).show();  
       }  
      
       /** 
        *信息Toast: 
        */  
       private void showInfo() {  
           Toasty.info(this,mBtn3.getText().toString(),Toast.LENGTH_SHORT,true).show();  
       }  
      
       /** 
        *警告Toast: 
        */  
       private void showWarning() {  
           Toasty.warning(this,mBtn4.getText().toString(),Toast.LENGTH_SHORT,true).show();  
       }  
      
       /*** 
        *通常的Toast 
        */  
       private void showUsual() {  
           Toasty.normal(this,mBtn5.getText().toString(),Toast.LENGTH_SHORT).show();  
       }  
      
       /** 
        *带有图标的常用Toast: 
        */  
       private void showIcon() {  
           Toasty.normal(this,mBtn6.getText().toString(),R.mipmap.ic_launcher).show();  
       }  
      
       /** 
        * 创建自定义Toasts : 
        */  
       private void showCustom() {  
           Toasty.custom(this,mBtn7.getText().toString(),  
                   R.mipmap.ic_launcher, Color.BLUE,Color.RED,Toast.LENGTH_SHORT,true,true).show();  
       }  
    
    

     

    展开全文
  • Android第三方——Toasty

    千次阅读 2017-02-22 10:16:45
    Toasty.error(this,mBtn1.getText().toString(), Toast.LENGTH_SHORT,true).show(); } /** *成功Toast: */ private void showSuccess() { Toasty.success(this,mBtn2.getText().toString(),Toast.LENGTH_...

     

    一、导入gradle添加依赖

     

    1.将它添加到您的根build.gradle文件

     

    allprojects {
        repositories {
            jcenter()
            //第一步
            maven { url "https://jitpack.io" }
        }
    }


    2.将其添加到你的项目build.gradle文件

     

     

    /第二步
        compile 'com.github.GrenderG:Toasty:1.1.3'

    二、使用

     

     

     /**
         *错误Toast:
         */
        private void showError() {
            Toasty.error(this,mBtn1.getText().toString(), Toast.LENGTH_SHORT,true).show();
        }
    
        /**
         *成功Toast:
         */
        private void showSuccess() {
            Toasty.success(this,mBtn2.getText().toString(),Toast.LENGTH_SHORT,true).show();
        }
    
        /**
         *信息Toast:
         */
        private void showInfo() {
            Toasty.info(this,mBtn3.getText().toString(),Toast.LENGTH_SHORT,true).show();
        }
    
        /**
         *警告Toast:
         */
        private void showWarning() {
            Toasty.warning(this,mBtn4.getText().toString(),Toast.LENGTH_SHORT,true).show();
        }
    
        /***
         *通常的Toast
         */
        private void showUsual() {
            Toasty.normal(this,mBtn5.getText().toString(),Toast.LENGTH_SHORT).show();
        }
    
        /**
         *带有图标的常用Toast:
         */
        private void showIcon() {
            Toasty.normal(this,mBtn6.getText().toString(),R.mipmap.ic_launcher).show();
        }
    
        /**
         * 创建自定义Toasts :
         */
        private void showCustom() {
            Toasty.custom(this,mBtn7.getText().toString(),
                    R.mipmap.ic_launcher, Color.BLUE,Color.RED,Toast.LENGTH_SHORT,true,true).show();
        }

     

     

     

     

    展开全文
  • 第三方开源:Toast工具:Toasty

    千次阅读 2017-01-21 23:01:37
    github:Toasty效果图:配置Project的build.gradlerepositories { maven { url "https://jitpack.io" } jcenter() }module的build.gradledependencies { ... compile 'com.github.GrenderG:Toasty:1.1.2' }使用原
  • 今天让我们来看看这个给我们带来:错误提示,信息提示,成功提示,警告提示等等。请看效果图: 1,在build.gradle文件中添加如下代码: allprojects { repositories { jcenter() maven { url ...
  • 效果图 录出来的效果不是很好,真机上展示效果还算完美。 如图所示该效果的实现依赖三个库: ...2,精美的Toast:查看之前博客:安卓项目实战之:基于Toasty库封装的精美的Toast工具类 3,Frag...
  • 该项目演示了不同的用法,例如: :无依赖性的Angular 2拖放 :Angular2 Toasty组件为您的应用程序显示咆哮风格的警报和消息 :Angular 2组件在页面顶部显示了slim加载栏 安装 克隆此仓库并在您最喜欢的shell中...
  • 2017年最值得关注的25个Android 这是在2017年发布的25个最好的Android开发的列表。所有这些都值得尝试 。...2.Toasty 这个实现了定制的Toast,下面是截图和这个开发的Github链接 github链接:https://github.c
  • :bus: 校车 课桌组件 关于 是一个组件,它为开发人员提供了构建产品的最简单方法。 动机 为了给我们的用户创造..." just-toasty " : " ^1.3.0 " , " styled-components " : " ^4.3.2 " 之后,您可以安装该
  • 很多很好的公开,都可以直接使用,可以使自己的app效果更加的炫,还可以缩短开发周期。 这里就主要说下,如何导入github上的项目,并如何引用。一开始导入,会遇到挺多问题,也不知道咋处理,慢慢摸索了两天,...
  • Lottie 这是一个动画。通过Adobe After Effects做出动画效果,然后通过Bodymovin(AE的插件)导出JSON数据,然后通过该生成原生动画效果。...Toasty 这是一个自定义Toast的。 Github地址:https://...
  • 本文列举了25个2017年初发布的最佳Android,虽然是按顺序排列的,但排名不分先后。1. Lottie这是一个能解析 Adobe After Effects 动画导出的...2. Toasty一个创建自定义Toast的。正如作者所说,这个是:The us
  • 本文列举了25个2017年初发布的最佳Android,虽然是按顺序排列的,但排名不分先后。 1. Lottie 这是一个能解析 Adobe After Effects 动画导出的JSON文件并把它们渲染成本...2. Toasty 一个创建自定义Toast

空空如也

空空如也

1 2
收藏数 39
精华内容 15
热门标签
关键字:

toasty库