Android: 如何使用ValueAnimator
Android: how to use ValueAnimator
我想用下面这个做翻译动画
public static void move(TextView view){
ValueAnimator va = ValueAnimator.ofFloat(0f, 3f);
int mDuration = 3000; //in millis
va.setDuration(mDuration);
va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
}
});
va.setRepeatCount(5);
va.start();
}
但是我不知道如何使用onAnimationUpdate方法
有人可以帮忙吗?
如果你真的,真的,真的想用ValueAnimator
对于 View
的动画翻译,你可以这样做(完成你的例子,假设你的意思是 translationX
.
请记住,您正在对从 0px 到 3px 的转换进行动画处理,因此您可能看不到太大差异。
fun move(view: TextView) {
val va = ValueAnimator.ofFloat(0f, 3f)
va.duration = 3000 //in millis
va.addUpdateListener { animation -> view.translationX = animation.animatedValue as Float }
va.repeatCount = 5
va.start()
}
ValueAnimator 是制作动画的好工具。通常我们有两个步骤:
第 1 步 - 通过
创建您的 ValueAnimator class
ValueAnimator animator = ValueAnimator.ofFloat(start value, end value);
第 2 步 - 添加一个更新侦听器并至少覆盖 onAnimationUpdate() 函数
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
float value = (float) animator.getAnimatedValue();
//this value should be used to update properties of views.
//just don't forget to run invalidate function of your views
// to redraw them.
}
});
我想用下面这个做翻译动画
public static void move(TextView view){
ValueAnimator va = ValueAnimator.ofFloat(0f, 3f);
int mDuration = 3000; //in millis
va.setDuration(mDuration);
va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
}
});
va.setRepeatCount(5);
va.start();
}
但是我不知道如何使用onAnimationUpdate方法
有人可以帮忙吗?
如果你真的,真的,真的想用ValueAnimator
对于 View
的动画翻译,你可以这样做(完成你的例子,假设你的意思是 translationX
.
请记住,您正在对从 0px 到 3px 的转换进行动画处理,因此您可能看不到太大差异。
fun move(view: TextView) {
val va = ValueAnimator.ofFloat(0f, 3f)
va.duration = 3000 //in millis
va.addUpdateListener { animation -> view.translationX = animation.animatedValue as Float }
va.repeatCount = 5
va.start()
}
ValueAnimator 是制作动画的好工具。通常我们有两个步骤:
第 1 步 - 通过
创建您的 ValueAnimator classValueAnimator animator = ValueAnimator.ofFloat(start value, end value);
第 2 步 - 添加一个更新侦听器并至少覆盖 onAnimationUpdate() 函数
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
float value = (float) animator.getAnimatedValue();
//this value should be used to update properties of views.
//just don't forget to run invalidate function of your views
// to redraw them.
}
});