属性动画,在Android 3.0的(API级别11)引入的,该属性动画系统可以制作动画的任何对象的属性。但是一般来说,属性动画系统是首选的使用方法,因为它更灵活,并提供更多功能。
参考:
https://www.jianshu.com/p/489abbc15241
https://blog.csdn.net/pzm1993/article/details/77929368
相关属性:
持续时间:您可以指定动画的持续时间。默认长度为300毫秒。
时间插值:您可以指定如何计算属性值作为动画当前已用时间的函数。
重复计数和行为:您可以指定是否在到达持续时间结束时重复动画以及重复动画的次数。您还可以指定是否要反向播放动画。将其设置为反向向前播放动画然后反复播放动画,直到达到重复次数。
动画设置:您可以将动画分组为一起或按顺序或在指定延迟后播放的逻辑集。
帧刷新延迟:您可以指定刷新动画帧的频率。默认设置为每10毫秒刷新一次,但应用程序刷新帧的速度最终取决于系统整体的繁忙程度以及系统为基础计时器提供服务的速度。
时间插值:您可以指定如何计算属性值作为动画当前已用时间的函数。
重复计数和行为:您可以指定是否在到达持续时间结束时重复动画以及重复动画的次数。您还可以指定是否要反向播放动画。将其设置为反向向前播放动画然后反复播放动画,直到达到重复次数。
动画设置:您可以将动画分组为一起或按顺序或在指定延迟后播放的逻辑集。
帧刷新延迟:您可以指定刷新动画帧的频率。默认设置为每10毫秒刷新一次,但应用程序刷新帧的速度最终取决于系统整体的繁忙程度以及系统为基础计时器提供服务的速度。
一、ValueAnimator
ValueAnimator valueAnimator = ValueAnimator.ofFloat(-100, 100);//设置需要变化的属性值范围 valueAnimator.setDuration(2000);//设置动画时间 valueAnimator.setRepeatCount(ValueAnimator.INFINITE);//设置动画一直重复 valueAnimator.setRepeatMode(ValueAnimator.REVERSE);//设置动画重复的模式 valueAnimator.start();//开始动画 //注册监听,监听属性值的变化,并设置给目标对象 valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { float value = (float) animation.getAnimatedValue(); mTarget.setTranslationX(value); } });
二、ObjectAnimator
它是ValueAnimator 的直接子类,那么就继承ValueAnimator 的功能,而且它可以直接将属性值设置给目标对象,这使得任何对象变得更加容易,因为不再需要实现ValueAnimator.AnimatorUpdateListener,动画属性会自动更新。
objectAnimator = ObjectAnimator.ofInt(mTarget, "textColor", BLCAK, RED, BLUE);//实例化,设置文本颜色值从BLCAK~RED~BLUE变化 objectAnimator.setDuration(2000);//设置动画持续时间 objectAnimator.setEvaluator(new ArgbEvaluator());//设置估算值(前面说过,使用ofInt()需要添加这行代码) objectAnimator.setRepeatCount(ValueAnimator.INFINITE);//设置一直重复 objectAnimator.setRepeatMode(ValueAnimator.REVERSE);//设置一直重复模式 objectAnimator.start();//开始动画
三、ViewPropertyAnimator
非常简洁
mTarget.animate().x(50f).y(100f);