这个类为运行动画提供了一个简单的计时引擎,它计算动画值并在目标对象上设置动画值。

这个一般只用于自绘制,控件动画一般使用另一个属性动画-对象动画,因为值动画使用起来较复杂。

构造方法

ValueAnimator.ofFloat

传入一个小数数组,将会根据数组里的值结合设置的时间和差值器进行数值的变换。

ValueAnimator.ofInt

传入一个整数数组,将会根据数组里的值结合设置的时间和差值器进行数值的变换。

常用方法

addUpdateListener

增加数值更新时的监听器,就是利用它获取到数值,然后进行控件的动画

示例:

  1. animate.addUpdateListener(ValueAnimator.AnimatorUpdateListener{
  2. onAnimationUpdate=function(animation)
  3. local value=animation.getAnimatedValue()
  4. -- 当前动画数值
  5. print(value)
  6. end
  7. })

getAnimatedValue

获取到当前变换的数组,结合监听器使用

示例:

  1. require "import"
  2. import "android.os.*"
  3. import "android.app.*"
  4. import "android.view.*"
  5. import "android.widget.*"
  6. import "android.animation.*"
  7. local layout = loadlayout({
  8. LinearLayout,
  9. layout_width = "fill",
  10. layout_height = "fill",
  11. gravity = "center",
  12. {
  13. Button,
  14. layout_width = "100dp",
  15. layout_height = "50dp",
  16. text = "开始动画",
  17. id = "button",
  18. },
  19. })
  20. activity.setContentView(layout)
  21. function initAnimate()
  22. local animate = ValueAnimator.ofInt({0,100})
  23. animate.setDuration(3000)
  24. -- 监听值变化
  25. animate.addUpdateListener(ValueAnimator.AnimatorUpdateListener{
  26. onAnimationUpdate=function(animation)
  27. local value=animation.getAnimatedValue()
  28. -- 赋值每一帧的值
  29. button.setX(value)
  30. end
  31. })
  32. -- 点击按钮开始动画
  33. button.onClick = function()
  34. animate.start()
  35. end
  36. end
  37. function main()
  38. initAnimate()
  39. end