这个类为运行动画提供了一个简单的计时引擎,它计算动画值并在目标对象上设置动画值。
这个一般只用于自绘制,控件动画一般使用另一个属性动画-对象动画,因为值动画使用起来较复杂。构造方法
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()
end
end
function main()
initAnimate()
end