如何使旋转动画平滑



我正试图在RotateAnimation的帮助下移动仪表上的针头图像。我正在使用以下代码

mNeedleAnimation = new RotateAnimation(mTransformedDegree, mTransformedDegree + degreeToRotate,x, y);
mTransformedDegree += degreeToRotate;
mNeedleAnimation.setAnimationListener(this);
mNeedleAnimation.setDuration(200);
mNeedleAnimation.setFillEnabled(true);
mNeedleAnimation.setFillAfter(true);
mNeedle.startAnimation(mNeedleAnimation);

这个代码的问题是指针直接从一个值跳到另一个值。但我希望针的运动是平稳的。我还尝试将setInterPolator用作动画的线性,但它没有如预期的那样工作。

有人能帮我吗?

更新针视图代码

final ViewTreeObserver viewTreeObserver = mNeedle.getViewTreeObserver();
viewTreeObserver.addOnPreDrawListener(new OnPreDrawListener() {
    @Override
    public boolean onPreDraw() 
    {
        mNeedleHeight= mNeedle.getHeight();
        mNeedleWidth = mNeedle.getWidth();
        return true;
    }           
});

您可以使用动画插入器,实例化任何子类并将其设置为动画。

mNeedleAnimation.setInterpolator(new AccelerateDecelerateInterpolator());

我在做这个:

rotanim = new RotateAnimation(
                (float) (((currenspeed) * 360) / 180),
                (float) (((nextspeed) * 360) / 180),
                (float) imgNeedle.getWidth() / 2,
                (float) imgNeedle.getHeight());
        rotanim.reset();
        rotanim.setDuration(400);
        rotanim.setFillAfter(true);
        imgNeedle.startAnimation(rotanim);

它对我有好处。

最新更新