我需要创建一个通过ValueAnimator
转换为某些特定x
和y
值的转换动画,因此我编写了以下代码,但它无法正常工作,并在NullPointerExceptions
和valueAnimator.getAnimatedValue("x")
上抛出valueAnimator.getAnimatedValue("y")
!
ValueAnimator translate = ValueAnimator.ofInt(viewX, endX, viewY, endY);
translate.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
int valX = (Integer) valueAnimator.getAnimatedValue("x");
int valY = (Integer) valueAnimator.getAnimatedValue("y");
updateViewLayout(mWindowManager, view2animate, valX, valY, null, null);
}
});
translate.setDuration(1000);
translate.start();
有任何想法吗?
最佳答案
这里的问题是,您正在尝试获取名为“ x”的属性的值,但尚未定义什么是“ x”以及其值是什么。因此,在您的情况下,我们需要定义“ x”和“ y”属性的限制。
所以只要更换
ValueAnimator translate = ValueAnimator.ofInt(viewX, endX, viewY, endY);
与
ValueAnimator translate = new ValueAnimator(); // Inititing ValueAnimator obj
translate.setValues(PropertyValuesHolder.ofInt("x",viewX,endX), // set the limits of property "x"
PropertyValuesHolder.ofInt("y", viewY,endY)); // setting the limits of property "y"
这样,我们可以在onAnimationUpdate方法中获取
valueAnimator.getAnimatedValue("x") & valueAnimator.getAnimatedValue("y")