RotateAnimation没有持续时间

时间:2011-06-02 13:21:02

标签: android animation rotation

人。我有这个代码(asyncTask)

我的animation()函数:

public void animation()
        {
        int   currentRotation = 0;
            anim = new RotateAnimation(currentRotation, (360*4),
                    Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);
            currentRotation = (currentRotation + 45) % 360;
            anim.setInterpolator(new LinearInterpolator());
            anim.setDuration(4000);// i want rotating without this <------------------
            anim.setFillEnabled(true);
            anim.setFillAfter(true);
            refresh.startAnimation(anim);
        }

任何人都可以告诉我没有anim.setDuration可以做到吗???? 只是开始..当我按下按钮(例如)动画停止。 请帮我。  问候,彼得。

最终代码:

 public void animation()
            {
            int   currentRotation = 0;
                anim = new RotateAnimation(currentRotation, (360*4),
                        Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);
                currentRotation = (currentRotation + 45) % 360;
                anim.setInterpolator(new LinearInterpolator());
                anim.setDuration(4000);
               // anim.setRepeatMode(Animation.INFINITE);
                anim.setRepeatCount(Animation.INFINITE);
                anim.setFillEnabled(true);
                anim.setFillAfter(true);
                refresh.startAnimation(anim);
            }
停止动画的

和某处refresh.clearAnimation(); 这对我来说是完美的..如果这里有些不对劲 - 请告诉我..无论如何,谢谢你的答案:)

2 个答案:

答案 0 :(得分:10)

我认为你应该看看重复模式。持续时间是一个循环通过动画的时间,如果你将其设置为重复,那么它可以永远继续。请参阅thisthat

例如,您可以使用:

anim.setRepeatCount(Animation.INFINITE);
anim.setRepeatMode(Animation.RESTART);

答案 1 :(得分:0)

正如PearsonArtPhoto建议的那样,你应该看看重复模式。持续时间是一个循环通过动画的时间,如果你将其设置为在此之后重复,那么它可以永远持续下去。

使用ObjectAnimator来实现结果。 例如,您可以使用:

anim.setRepeatCount(Animation.INFINITE);
anim.setRepeatMode(ValueAnimator.RESTART); //note the difference here