Android-->你真的会用属性动画(ValueAnimator)么

讲真, ValueAnimator并不能当做属性动画来理解, 因为这样会限制自己对它的理解, 也会限制对它的使用范围.

This class provides a simple timing engine for running animations which calculate animated values and set them on target objects.

官方描述文档其实也说明了这一点.

其实:ValueAnimator本质上是, 在一段时间之内, 某个数值的变化曲线.
其本身是没有任何动画效果. 可以通过addUpdateListener监听动画值的变化, 也可以通过getAnimatedValue拿到当前动画的值.

而之所以

ObjectAnimator
         .ofFloat(view, "rotationX", 0.0F, 360.0F)
         .setDuration(500)
         .start();

这样使用之后, 会有动画的存在. 是因为ObjectAnimator通过你传的对象属性参数, 帮你调用了属性的set方法(这个过程是通过反射实现的), 如果你传了一个不存在的属性, 那么无效果的(当然你也可以自定义一个属性).

其实说白了:ValueAnimator就是一个Value,在Duration时间内, 根据Interpolator, 做出的变化过程.

api 16 的时候, 谷歌又添加了 TimeAnimator这个动画控制了, 一段时间之内, 时间的变化曲线.

所以

完全可以这样使用它:

val anim = ObjectAnimator.ofFloat(3f, 1f)
anim.duration = 300
anim.interpolator = LinearInterpolator()

anim.addUpdateListener {
     progress = it.animatedValue as Float
  //progress 的返回是 3-1的值. 可以在这个回调中, 执行想要的任何操作. 包括动画.
     Log.i("Demo", "Progress:" + progress)
}
anim.start()

联系作者

加群传送门

请使用QQ扫码加群, 小伙伴们在等着你哦!

关注我的公众号, 每天都能一起玩耍哦!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值