这个类为运行动画提供了一个简单的计时引擎,它计算动画值并在目标对象上设置动画值。
这个一般只用于自绘制,控件动画一般使用另一个属性动画-对象动画,因为值动画使用起来较复杂。构造方法
ValueAnimator.ofFloat
传入一个小数数组,将会根据数组里的值结合设置的时间和差值器进行数值的变换。
ValueAnimator.ofInt
传入一个整数数组,将会根据数组里的值结合设置的时间和差值器进行数值的变换。
常用方法
addUpdateListener
增加数值更新时的监听器,就是利用它获取到数值,然后进行控件的动画
示例:
animate.addUpdateListener(ValueAnimator.AnimatorUpdateListener{onAnimationUpdate=function(animation)local value=animation.getAnimatedValue()-- 当前动画数值print(value)end})
getAnimatedValue
获取到当前变换的数组,结合监听器使用
示例:
require "import"import "android.os.*"import "android.app.*"import "android.view.*"import "android.widget.*"import "android.animation.*"local layout = loadlayout({LinearLayout,layout_width = "fill",layout_height = "fill",gravity = "center",{Button,layout_width = "100dp",layout_height = "50dp",text = "开始动画",id = "button",},})activity.setContentView(layout)function initAnimate()local animate = ValueAnimator.ofInt({0,100})animate.setDuration(3000)-- 监听值变化animate.addUpdateListener(ValueAnimator.AnimatorUpdateListener{onAnimationUpdate=function(animation)local value=animation.getAnimatedValue()-- 赋值每一帧的值button.setX(value)end})-- 点击按钮开始动画button.onClick = function()animate.start()endendfunction main()initAnimate()end
