GitHub:ToastEx
導(dǎo)入項目
Step 1. Add the JitPack repository to your build file
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2. Add the dependency
dependencies {
implementation 'com.github.Zzzia:ToastEx:1.0.1'
}
用法
基礎(chǔ)用法开泽,默認有圖標(biāo)+動畫
ToastEx.error(context, "...").show();
ToastEx.success(context, "...").show();
ToastEx.info(context, "...").show();
ToastEx.warning(context, "...").show();
ToastEx.normal(context, "...").show();
可以深度定制自己的動畫
加入自己的自定義view在后面介紹
//自定義圖標(biāo)的方法
ToastEx.custom(context
, "..."
, Toast.LENGTH_SHORT//時間
, ToastEx.NO_COLOR//背景顏色
, toastImage)//自定義圖標(biāo)
.show();
//自定義圖標(biāo)和文字的方法斑鸦,若只需要自定義文字,圖標(biāo)傳入null即可
ToastEx.custom(context
, new CustomText(context)//自定義文字
, Toast.LENGTH_SHORT
, ToastEx.NO_COLOR
, new InfoAnim(context))
.show();
//獲取顏色和動畫時長
public void setDuration(int duration);
public void setColor(int color);
修改默認效果
在任意地方使用即可
ToastEx.Config.getInstance()
.setErrorColor(@ColorInt int errorColor) // optional
.setInfoColor(@ColorInt int infoColor) // optional
.setSuccessColor(@ColorInt int successColor) // optional
.setWarningColor(@ColorInt int warningColor) // optional
.setTextColor(@ColorInt int textColor) // optional
.tintIcon(boolean tintIcon) // 是否顯示圖標(biāo)
.setUseAnim(boolean useAnim) //是否顯示動畫
.setToastTypeface(@NonNull Typeface typeface) // optional
.setTextSize(int sizeInSp) // optional
.apply(); // 別忘使用這個方法
重置為默認效果
ToastEx.Config.reset();
自定義屬于自己的動畫效果
借鑒了很多Toasty和TastyToast的元素喷众,Toasty沒有動畫效果卿泽,也很難自己去添加莺债,而TastyToast有動畫效果,卻并不能運用在有特殊要求的項目中签夭,于是自己寫了ToastEx齐邦。
先了解一下toast的布局。就是一個LinearLayout第租,方向為橫向措拇,有一個基于ImageView的子布局和一個基于TextView的子布局,分別是ToastImage和ToastText慎宾,能夠接收動畫持續(xù)時長和顏色兩個參數(shù)丐吓。
自定義過程就是重寫onDraw方法,實現(xiàn)完畢后使用ToastEx.custom()即可實現(xiàn)自定義動畫趟据。
ToastEx.custom(context
, new CustomText(context)//自定義文字動畫
, Toast.LENGTH_SHORT//時間
, ToastEx.NO_COLOR//背景顏色
, new InfoAnim(context))//自定義圖標(biāo)動畫券犁,可以不要
.show();
以app中的文字變色的動畫舉例
/**
* Created by zia on 2018/5/14.
* 文字漸變
*/
public class CustomText extends ToastText {
private int duration;
private boolean begin = false;
private int color = 0;
public CustomText(Context context) {
super(context);
}
@Override//重寫該方法,獲得動畫最佳持續(xù)時間
public void setDuration(int duration) {
super.setDuration(duration);
this.duration = duration;
}
@Override//重寫該方法汹碱,獲得文字顏色
public void setColor(int color) {
super.setColor(color);
this.color = color;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (!begin) {//一個顏色漸變的屬性動畫
begin = true;
ValueAnimator valueAnimator;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
valueAnimator = ValueAnimator.ofArgb(color, Color.RED);
} else {
valueAnimator = ValueAnimator.ofInt(color, Color.RED);
}
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
CustomText.this.color = (int) animation.getAnimatedValue();
postInvalidate();
}
});
// valueAnimator.setDuration(duration);
//為了顯示漸變效果粘衬,把時間改為1s
valueAnimator.setDuration(1000);
valueAnimator.start();
}
setTextColor(color);//設(shè)置文字顏色
}
}