我试图在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);
此代码的问题是针直接从1值跳到另一个值。但我希望针的运动顺畅。我还尝试将setInterPolator
用作动画的线性,但它没有按预期工作。
任何人都可以帮助我吗?
更新针视图代码
final ViewTreeObserver viewTreeObserver = mNeedle.getViewTreeObserver();
viewTreeObserver.addOnPreDrawListener(new OnPreDrawListener() {
@Override
public boolean onPreDraw()
{
mNeedleHeight= mNeedle.getHeight();
mNeedleWidth = mNeedle.getWidth();
return true;
}
});
答案 0 :(得分:0)
您可以使用animation interporlators并实例化任何子类并将其设置为动画。
mNeedleAnimation.setInterpolator(new AccelerateDecelerateInterpolator());
答案 1 :(得分:0)
我这样做:
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);
它对我有用..