如有不足,烦请见谅;如有帮助,顶一个!
关于系统吐司,可设置背景颜色和字体颜色吐司,以及自定义布局吐司。还可以居中显示吐司!
先来一个公共的公共接口Util
import android.content.Context;
import android.content.res.Resources;
import android.view.LayoutInflater;
import com.techfit.bouncescrollview.BounceSVApp;
import com.techfit.bouncescrollview.Utils.consts.ConstsHttp;
import com.techfit.bouncescrollview.Utils.consts.ConstsIntent;
import com.techfit.bouncescrollview.Utils.consts.ConstsSPKeys;
/**
* Created by wangzhengyang on 2017/1/20.
*/
public interface Util {
/**
* 全局的Context
*/
Context CONTEXT = BounceSVApp.getApp().getApplicationContext();
/**
* 全局的布局加载器
*/
LayoutInflater INFLATER = (LayoutInflater) CONTEXT.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
/**
* 全局的Resource
*/
Resources RES = CONTEXT.getResources();
/**
* 网络请求
*/
//ConstsHttp HTTP = ConstsHttp.DEBUG;
/**
* SharedPreferences的key
*/
interface SPKEYS extends ConstsSPKeys {
}
/**
* Intent传值(name,value)的name
* 例:intent.putExtra(INTENT.USER, new User(1, "李四", "男", 21));
*/
//interface INTENT extends ConstsIntent {
//}
}
再来ToastUtil,实现Util
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.Shape;
import android.view.Gravity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.techfit.bouncescrollview.R;
/**
* 吐司工具类
* Created by wangzhengyang on 2017/1/19.
*/
public class ToastUtil implements Util {
public static final int LAYOUT_TIP = R.layout.layout_tip;
public static final int TEXT_VIEW_TIP = R.id.tip_text;
public static final int IMG_VIWE_TIP = R.id.tip_img;
public static final int GRAVITY_DEFAULT = Integer.MIN_VALUE;
// 系统默认吐司 —》
/**
* 短吐司
* @param pTip 要吐司的内容
*/
public static void showTip(String pTip) {
showTipDef(pTip, Toast.LENGTH_SHORT);
}
/**
* 长吐司
* @param pTip 要吐司的内容
*/
public static void showLongTip(String pTip) {
showTipDef(pTip, Toast.LENGTH_LONG);
}
private static void showTipDef(String pTip, int pDuration) {
if (null == pTip) throw new NullPointerException("Text is null!");
Toast.makeText(CONTEXT, pTip, pDuration).show();
}
// 《— 系统默认吐司
// 显示自定义吐司 —》
private static void showTipCus(int pDuration, int layoutId, ViewCallBack pViewCallBack, int pGravity) {
Toast tip = new Toast(CONTEXT);
tip.setDuration(pDuration);
if (layoutId <= 0) layoutId = LAYOUT_TIP;
View v = INFLATER.inflate(layoutId, null);
v = pViewCallBack.getView(v);
tip.setView(v);
if (pGravity != GRAVITY_DEFAULT) {
tip.setGravity(pGravity, 0, 0);
}
tip.show();
}
// 显示吐司 显示自定义默认吐司 —》
private static void showTipCustom(final String pTip, int pDuration, final int pGravity){
if (null == pTip) return;
showTipCus(pDuration, LAYOUT_TIP, new ViewCallBack() {
@Override
public View getView(View v) {
TextView tv = (TextView) v.findViewById(TEXT_VIEW_TIP);
tv.setText(pTip);
return v;
}
}, pGravity);
}
public static void showTipCus(String pTip) {
showTipCustom(pTip, Toast.LENGTH_SHORT, GRAVITY_DEFAULT);
}
public static void showLongTipCus(String pTip) {
showTipCustom(pTip, Toast.LENGTH_LONG, GRAVITY_DEFAULT);
}
public static void showTipCusCenter(final String pTip) {
showTipCustom(pTip, Toast.LENGTH_SHORT,Gravity.CENTER);
}
public static void showLongTipCusCenter(final String pTip) {
showTipCustom(pTip, Toast.LENGTH_LONG,Gravity.CENTER);
}
// 《— 显示吐司 显示自定义默认吐司
// 显示吐司 可以设置背景颜色和文字颜色 —》
private static void showTipCus(final String pTip, int pDuration, final int pGravity, final int bgColor, final int textColor){
if (null == pTip) return;
showTipCus(pDuration, LAYOUT_TIP, new ViewCallBack() {
@Override
public View getView(final View v) {
if (bgColor > 0) {
ShapeDrawable shapeDrawable = new ShapeDrawable(new Shape() {
@Override
public void draw(Canvas canvas, Paint paint) {
paint.setColor(bgColor);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL);
canvas.drawRoundRect(new RectF(v.getLeft(), v.getTop(), v.getRight(), v.getBottom()), 36f, 36f, paint);
}
});
v.setBackgroundDrawable(shapeDrawable);
}
TextView tv = (TextView) v.findViewById(TEXT_VIEW_TIP);
tv.setTextColor(textColor);
tv.setText(pTip);
return v;
}
}, pGravity);
}
public static void showTipCus(String pTip, int bgColor, int textColor) {
showTipCus(pTip, Toast.LENGTH_SHORT, GRAVITY_DEFAULT, bgColor, textColor);
}
public static void showLongTipCus(String pTip, int bgColor, int textColor) {
showTipCus(pTip, Toast.LENGTH_LONG, GRAVITY_DEFAULT, bgColor, textColor);
}
public static void showTipCusCenter(final String pTip, int bgColor, int textColor) {
showTipCus(pTip, Toast.LENGTH_SHORT,Gravity.CENTER, bgColor, textColor);
}
public static void showLongTipCusCenter(final String pTip, int bgColor, int textColor) {
showTipCus(pTip, Toast.LENGTH_LONG,Gravity.CENTER, bgColor, textColor);
}
// 《— 显示吐司 可以设置背景颜色和文字颜色
// 显示吐司 传入布局id,和视图回调 —》
public static void showTipCus(int layoutId, ViewCallBack pViewCallBack){
showTipCus(Toast.LENGTH_SHORT, layoutId, pViewCallBack,GRAVITY_DEFAULT);
}
public static void showLongTipCus(int layoutId, ViewCallBack pViewCallBack){
showTipCus(Toast.LENGTH_LONG, layoutId, pViewCallBack,GRAVITY_DEFAULT );
}
public static void showTipCusCenter(int layoutId, ViewCallBack pViewCallBack) {
showTipCus(Toast.LENGTH_SHORT, layoutId, pViewCallBack, Gravity.CENTER);
}
public static void showLongTipCusCenter(int layoutId, ViewCallBack pViewCallBack) {
showTipCus(Toast.LENGTH_LONG, layoutId, pViewCallBack, Gravity.CENTER);
}
// 《— 显示吐司 传入布局id,和视图回调
/**
* 视图回调接口,将视图(View)传入,处理后,再返回
*/
public interface ViewCallBack {
View getView(View v);
}
// 《— 显示自定义吐司
}
布局文件
这样一个集系统吐司,可改变背景颜色和字体颜色吐司,以及自定义布局吐司就实现了。
接下来是使用:
//系统吐司 ToastUtil.showTip("系统吐司 def short toast");
//① 默认布局 ToastUtil.showTipCus("cus short toast");
//②传入布局的resId,和ViewCallBack,实现自定义吐司 ToastUtil.showTipCus(R.layout.layout_tip, new ToastUtil.ViewCallBack() { @Override public View getView(View v) { TextView tv = (TextView) v.findViewById(R.id.tip_text); tv.setText("自定义吐司 cus short toast"); tv.setTextColor(Color.RED); return v; } });
//③可以改变背景颜色和字体 ToastUtil.showTipCus("自定义吐司 cus short toast", Color.argb(0x90, 0xFF, 0xCC, 0x90), Color.rgb(0x00, 0x33, 0x00));
ooo啦!!!