Android:如何使用ValueAnimator
我想用下面的方法做一个翻译动画Android:如何使用ValueAnimator,android,android-animation,Android,Android Animation,我想用下面的方法做一个翻译动画 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 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
为视图的翻译制作动画,你可以这样做(完成您的示例,假设您的意思是translationX
;请记住,您正在为从0px到3px的翻译设置动画,因此您可能不会看到太大的差异):
ValueAnimator是制作动画的好工具。通常我们有两个步骤:
步骤1-通过创建ValueAnimator类
ValueAnimator animator = ValueAnimator.ofFloat(start value, end value);
步骤2-添加一个更新侦听器并至少重写onAnimationUpdate()函数
只需应用动画即可。您可以从animation
对象获取值。或者,您可以使用ObjectAnimator
此类将自动将动画值应用于给定对象的属性。@Ahmada Beye//Pro tip;调用“va.setInterpolator”(新的AcceleratedAccelerateInterpolator())为了更流畅的动画。非常感谢,这正是我真正、真正、真正需要的。请说明为什么要强调“真的”。这是一种麻烦的方法还是一种糟糕的做法?新手问题顺便提一下。@FelixVavour,因为这不是在视图上执行翻译动画的最佳方式(我个人更喜欢view.animate())。请看动画框架团队的介绍。
ValueAnimator animator = ValueAnimator.ofFloat(start value, end value);
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.
}
});