package com.youth.xframe.widget;
import android.content.Context;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.support.annotation.CheckResult;
import android.support.annotation.ColorInt;
import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.youth.xframe.R;
import com.youth.xframe.XFrame;
import com.youth.xframe.utils.XOutdatedUtils;
/**
* Toast
*/
public class XToast {
private static final @ColorInt int DEFAULT_TEXT_COLOR = Color.parseColor("#FFFFFF");
private static final @ColorInt int ERROR_COLOR = Color.parseColor("#D8524E");
private static final @ColorInt int INFO_COLOR = Color.parseColor("#3278B5");
private static final @ColorInt int SUCCESS_COLOR = Color.parseColor("#5BB75B");
private static final @ColorInt int WARNING_COLOR = Color.parseColor("#FB9B4D");
private static final @ColorInt int NORMAL_COLOR = Color.parseColor("#444344");
private static final String TOAST_TYPEFACE = "sans-serif-condensed";
private static Context context= XFrame.getContext();
private XToast() {
}
public static Toast normal( @NonNull String message) {
return normal( message, Toast.LENGTH_SHORT, null);
}
public static Toast normal( @NonNull String message, Drawable icon) {
return normal( message, Toast.LENGTH_SHORT, icon);
}
public static Toast normal( @NonNull String message, int duration) {
return normal( message, duration);
}
public static Toast normal( @NonNull String message, int duration,
Drawable icon) {
return custom( message, icon ,NORMAL_COLOR, duration);
}
public static Toast warning( @NonNull String message) {
return warning( message, Toast.LENGTH_SHORT, true);
}
public static Toast warning( @NonNull String message, int duration) {
return warning( message, duration, true);
}
public static Toast warning( @NonNull String message, int duration, boolean withIcon) {
Drawable icon=null;
if (withIcon){
icon=XOutdatedUtils.getDrawable( R.drawable.xtoast_warning);
}
return custom( message,icon, WARNING_COLOR, duration);
}
public static Toast info( @NonNull String message) {
return info( message, Toast.LENGTH_SHORT, true);
}
public static Toast info( @NonNull String message, int duration) {
return info( message, duration, true);
}
public static Toast info( @NonNull String message, int duration, boolean withIcon) {
Drawable icon=null;
if (withIcon){
icon=XOutdatedUtils.getDrawable( R.drawable.xtoast_info);
}
return custom( message,icon, INFO_COLOR, duration);
}
public static Toast success( @NonNull String message) {
return success( message, Toast.LENGTH_SHORT, true);
}
public static Toast success( @NonNull String message, int duration) {
return success( message, duration, true);
}
public static Toast success( @NonNull String message, int duration, boolean withIcon) {
Drawable icon=null;
if (withIcon){
icon=XOutdatedUtils.getDrawable( R.drawable.xtoast_success);
}
return custom( message,icon, SUCCESS_COLOR, duration);
}
public static Toast error( @NonNull String message) {
return error( message, Toast.LENGTH_SHORT, true);
}
public static Toast error( @NonNull String message, int duration) {
return error( message, duration, true);
}
public static Toast error( @NonNull String message, int duration, boolean withIcon) {
Drawable icon=null;
if (withIcon){
icon=XOutdatedUtils.getDrawable( R.drawable.xtoast_error);
}
return custom( message,icon, ERROR_COLOR, duration);
}
public static Toast custom(@NonNull String message, @ColorInt int tintColor) {
return custom( message, null, DEFAULT_TEXT_COLOR, tintColor,Toast.LENGTH_SHORT);
}
public static Toast custom( @NonNull String message, Drawable icon, @ColorInt int tintColor) {
return custom( message, icon, DEFAULT_TEXT_COLOR, tintColor,Toast.LENGTH_SHORT);
}
public static Toast custom(@NonNull String message, @ColorInt int tintColor,int duration) {
return custom( message, null, DEFAULT_TEXT_COLOR, tintColor,duration);
}
public static Toast custom( @NonNull String message, Drawable icon, @ColorInt int tintColor,int duration) {
return custom( message, icon, DEFAULT_TEXT_COLOR, tintColor,duration);
}
public static Toast custom( @NonNull String message, @DrawableRes int iconRes,
@ColorInt int textColor, @ColorInt int tintColor, int duration) {
return custom( message, XOutdatedUtils.getDrawable( iconRes), textColor,tintColor, duration);
}
/**
* 自定义toast方法
* @param message 提示消息文本
* @param icon 提示消息的icon,传入null代表不显示
* @param textColor 提示消息文本颜色
* @param tintColor 提示背景颜色
* @param duration 显示时长
* @return
*/
public static Toast custom( @NonNull String message, Drawable icon,
@ColorInt int textColor, @ColorInt int tintColor, int duration) {
Toast currentToast = new Toast(context);
View toastLayout = LayoutInflater.from(context).inflate(R.layout.xtoast_view, null);
ImageView toastIcon = (ImageView) toastLayout.findViewById(R.id.xtoast_icon);
TextView toastText = (TextView) toastLayout.findViewById(R.id.xtoast_text);
Drawable drawableFrame= XOutdatedUtils.getDrawable(R.drawable.xtoast_frame);
drawableFrame.setColorFilter(new PorterDuffColorFilter(tintColor, PorterDuff.Mode.SRC_IN));
XOutdatedUtils.setBackground(toastLayout, drawableFrame);
if (icon == null){
toastIcon.setVisibility(View.GONE);
}else{
XOutdatedUtils.setBackground(toastIcon, icon);
}
toastText.setTextColor(textColor);
toastText.setText(message);
toastText.setTypeface(Typeface.create(TOAST_TYPEFACE, Typeface.NORMAL));
currentToast.setView(toastLayout);
currentToast.setDuration(duration);
currentToast.show();
return currentToast;
}
}