美文网首页
Android工具类----ToastUtils

Android工具类----ToastUtils

作者: chaohx | 来源:发表于2017-07-21 15:40 被阅读218次

    前言

    Android中的Toast可谓是最长用的东西之一了,用起来也相当简单,也就是一行代码的事情。但是它有默认的样子,也就是在屏幕的底部弹出一个黑色半透明的框。但是有时候设计人员会觉得它不好看,不够多样性。所以这篇文章就封装一个自己的可变的Toast。

    封装ToastUtils

    
    public class ToastUtils {
    
        /**
         * 这里是方法的重载,用于开放不同的参数
         *
         * @param messageID
         */
        public static void showToast(int messageID) {
            showToast(App.getInstance(), messageID);
        }
    
    
        public static void showToast(String message) {
            showToast(App.getInstance(), message);
        }
    
    
        public static void showToast(int messageID, int duration) {
            showToast(App.getInstance(), messageID, duration);
        }
    
        public static void showToast(String message, int duration) {
            showToast(App.getInstance(), message, duration);
        }
    
    
        public static void showToast(Context context, int resId) {
            showToast(context, context.getString(resId), Toast.LENGTH_SHORT);
        }
    
        public static void showToast(Context context, String message) {
            showToast(context, message, Toast.LENGTH_SHORT);
        }
    
        public static void showToast(Activity context, int resId) {
            showToast(context, context.getString(resId), Toast.LENGTH_SHORT);
        }
        public static void showToast(Activity context, int resId,int duration) {
            showToast(context, context.getString(resId), duration);
        }
        private static void showToast(Activity context, String message) {
            showToast(context, message, Toast.LENGTH_SHORT);
        }
    
    
        private static void showToast(Context context, int resId, int duration) {
            ///Toast.makeText(context, resId, duration).show();
            showToast(context, context.getString(resId), duration);
        }
    
        static Toast toast;
        static TextView contentView;
    
        /**
         * 自定义Toast的样式与位置
         *
         * @param context
         * @param message
         * @param duration
         */
        private static void showToast(Context context, String message, int duration) {
            if (context == null) {
                return;
            }
            try {
                if (toast == null || contentView == null) {
                    int dp30 = DensityUtils.dp2px(context, 30);
                    int dp20 = DensityUtils.dp2px(context, 20);
                    contentView = new TextView(context);
                    contentView.setGravity(Gravity.CENTER);
                    contentView.setBackgroundResource(R.drawable.bg_toast);
                    contentView.setTextSize(16);
                    contentView.setTextColor(context.getResources().getColor(R.color.white));
                    contentView.setPadding(dp30, dp20, dp30, dp20);
                    toast = new Toast(context);
                    toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
                    toast.setView(contentView);
                    toast.setDuration(duration);
                }
                contentView.setText(message);
                toast.show();
            } catch (Exception e) {
                Toast.makeText(context, message, duration).show();
                e.printStackTrace();
            }
        }
    }
    
    

    以上的代码的重中之重也就在最后一个showToast方法里了。这里通过toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);来设置了Toast在页面中的位置。点进去看一眼源码:

        public void setGravity(int gravity, int xOffset, int yOffset) {
            throw new RuntimeException("Stub!");
        }
    
    

    这三个参数不难理解。

    通过toast.setView(contentView);来设置Toast的样式,结合自定义View就可以创造出各种各样的Toast。

    相关文章

      网友评论

          本文标题:Android工具类----ToastUtils

          本文链接:https://www.haomeiwen.com/subject/yebrkxtx.html