SpringAnimation 类是最近(25.3.0版本)才添加在支持库中的一个类,它主要是为了让实现弹性动画变得更加方便,其实facebook在很久以前的Rebound库就实现了这样的动画,而且效果非常好,不过现在有官方支持肯定是更好了。本文先来看看SpringAnimation的基本用法,然后再将它和Rebound做一些比较。
SpringAnimation类介绍
SpringAnimation类位于android.support.animation包之下,别和属性动画混淆了,属性动画的包是android.animation.Animator,看来以后对动画的临时增改都会放在android.support.animation里面了。跟SpringAnimation一起放出的类还有:Spring Force defines the characteristics of the spring being used in the animation.
其中SpringAnimation类是DynamicAnimation类的子类,而DynamicAnimation的意思是符合动力学的动画,也就是物理动画。
为什么要使用SpringAnimation?
我们已经有万能的属性动画了, 使用 BounceInterpolator 或者 OvershootInterpolator 作为插值器不是一样可以弹来弹去么,为什么还需要SpringAnimation呢?
主要是因为用它实现弹性动画非常简单,而且BounceInterpolator 或者 OvershootInterpolator 的轨迹并不符合物理学上的弹跳效果。
SpringAnimation的基本用法
先引入必要的包:compile 'com.android.support:support-dynamic-animation:25.3.0'
使用SpringAnimation非常简单,几行代码SpringForce springForce = new SpringForce(0)
.setDampingRatio(SpringForce.DAMPING_RATIO_HIGH_BOUNCY)
.setStiffness(SpringForce.STIFFNESS_VERY_LOW);
final SpringAnimation anim = new SpringAnimation(view ,SpringAnimation.TRANSLATION_Y).setSpring(springForce);
anim.start();
就是这么简单。
对以上代码的解释
我们首先定义了一个用于设置弹性参数的 SpringForce 对象,其构造参数中的 0 表示被作用对象的最终位置。
setDampingRatio(float dampingRatio)方法设置弹性阻尼,dampingRatio越大,摆动次数越少,当到1的时候完全不摆动,注意它体验出来的最明显的特征是摆动次数这个概