android怎么给按钮绑定toast,Android 为Toast添加动画

GitHub:ToastEx

3039a7285515

toast.gif

导入项目

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'

}

用法

基础用法,默认有图标+动画

ToastEx.error(context, "...").show();

ToastEx.success(context, "...").show();

ToastEx.info(context, "...").show();

ToastEx.warning(context, "...").show();

ToastEx.normal(context, "...").show();

可以深度定制自己的动画

加入自己的自定义view在后面介绍

//自定义图标的方法

ToastEx.custom(context

, "..."

, Toast.LENGTH_SHORT//时间

, ToastEx.NO_COLOR//背景颜色

, toastImage)//自定义图标

.show();

//自定义图标和文字的方法,若只需要自定义文字,图标传入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) // 是否显示图标

.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,能够接收动画持续时长和颜色两个参数。

自定义过程就是重写onDraw方法,实现完毕后使用ToastEx.custom()即可实现自定义动画。

ToastEx.custom(context

, new CustomText(context)//自定义文字动画

, Toast.LENGTH_SHORT//时间

, ToastEx.NO_COLOR//背景颜色

, new InfoAnim(context))//自定义图标动画,可以不要

.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//重写该方法,获得动画最佳持续时间

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);//设置文字颜色

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值