开源社区

渗透理解Animation时间插值Interpolator类

渗透理解Animation时间插值Interpolator类

  • 发布:
  • 人气: 13
  • 评论: 0
标签:

应用介绍

  一个好的动画一定是用心做出来的,何为用心?其中一点我认为定义适当的 Interpolator 就是一种用心的表现;这点在google material design 中尤为明显。

  一个好的动画一定要符合实际,一句老的话就是:石头下落一定要受重力才优雅,不然一颗石头像羽毛一样在风中还飘啊飘的那就不行了。

  说到Interpolator 啊,这个要从3年前说起,话说当年谷歌、诺基亚、Qiujuer 三分天下.... 哈哈,开个玩笑~

  Interpolator 这个时间插值类,其主要使用在动画中,其作用主要是控制目标变量的变化值进行对应的变化。

  你可以这么理解,现在小明去买酱油,规定时间是1个小时到达,里程是1公里;现在小明心里唯恐无法达到,所以先跑起来了,但因为体力消耗所以逐渐的慢下来了;然后成功到达。这样的一个过程中把小明逐渐慢下来的这个过程抽象出来也就是Interpolator 的工作;当然Interpolator 也可以控制小明先慢慢热身然后越跑越快最后达到。

  这些都是Interpolator 能完成的工作,同样Interpolator 还能控制一个弹球掉在地上弹起来逐渐降低的过程,这些都是可以控制的。

  你可以这么理解:在Animation中时间是正常的走的,你设置了200ms,现在走到了100ms了,那么按照线性来说现在应该是走了一半的路程也就是0.5;现在就把这0.5传递给Interpolator 让Interpolator 告诉我走到一半时间的时候此时小明在哪里;这也就是Interpolator 的原理。

  AccelerateDecelerateInterpolator 在动画开始与结束的地方速率改变比较慢,在中间的时候加速

  AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速

  AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值

  PathInterpolator 这个是新增的我说原来怎么记得是9个,这个顾名思义就是可以定义路径坐标,然后可以按照路径坐标来跑动;注意其坐标并不是 XY,而是单方向,也就是我可以从0~1,然后弹回0.5 然后又弹到0.7 有到0.3,直到最后时间结束。(这个后面单独说说)

  这个图片相信前段时间看的不少吧?前段时间material design 刚刚出来的时候好多人说这个啊,但是好像都是说图,但是没有说说其如何实现吧。

相关应用