Android工具类----ToastUtils

前言

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)