我正试图在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);
它对我有好处。