新更新了一个叫做DynamicAnimation(动力学动画??)的类,其中他有一个子类叫做SpringAnimation,官方文档是这样说的:

···

···

粗略的翻译一下:

这个类是基于物理学动画的鸡肋,能够管理动画的生命周期,例如start()和cancel(),同时还能处理所有子类动画的常用设置。

举个简单的栗子,DynamicAnimation支持添加DynamicAnimation.OnAnimationEndListener 和DynamicAnimation.OnAnimationUpdateListener这种可以观察到重要的动画事件的回调,任何子类DynamicAnimation可以使用setStartValue(float)和setStartVelocity(float)设置初始条件。

那么也就是说我们可以通过这个新更新出来的动画库来实现一些更加符合物理学的动画。

SpringAnimation简介

上面已经介绍了SpringAnimation的父类,那么这个SpringAnimation又是个什么鬼呢?春天动画?并不是,而是弹性动画。官方文档是这样说的:

介绍完毕,那我们就来创建一个最简单的SpringAnimation。

使用SpringAnimation

1.引包

2.创建默认的SpringAnimation

这就搞定了,这里面第一个参数是释放动画的view,第二个参数是动画类型,第三个是float类型的被作用对象最终位置。

3.预先设置SpringForce来驱动动画

setDampingRatio(@FloatRange(from = 0.0) float dampingRatio)是用来设置阻尼的,这个参数不能够小于0,否则会报错。当它的值是0的时候 ,动画就会不停的弹,当值大于1的时候,动画靠近原位置的时候提前减速后停止,如果当它的值是1的时候,动画就不会弹了,其中官方在SpringForce类中给了这么几个常量:

可以直接SpringForce.DAMPING_RATIO_HIGH_BOUNCY这样使用,也可以自己填0.3f这样的具体数值。

setStiffness(@FloatRange(from = 0.0) float stiffness)是用来设置刚度的,同样不能小于0,它的值越小,弹性越强,弹的时间越长,反之弹的时间越短,在SpringForce类中定义了这样几个常量:

4.构造方法

SpringAnimation有两种构造方法

public SpringAnimation(View v, ViewProperty property)

public SpringAnimation(View v, ViewProperty property, float finalPosition)

如果使用三个参数的方法就可以不用设置SpringForce

而是这样的方式来使用。

5.设置起始位置和速度

起始位置

SpringForce设置了view的终点,但是我们需要使用SpringAnimation的setStartValue(float startValue) 来设置动画的开始位置,如果不使用这个方法,那么动画就会吧view的当前位置当做起始点。

起始速度

SpringAnimation的默认起始速度是0,我们可以自己定义动画的起始速度, 这个速度的值是 像素/秒。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐