Android - 重复动画增加持续时间,直到持续时间小于值

时间:2012-10-14 13:28:30

标签: android animation rotation

我正在尝试创建一个在imageview内旋转图像的动画。 该旋转必须在每次重复时增加速度(持续时间),直到持续时间小于一个值。

我尝试的是:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/my_logo"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="2000"
    android:repeatMode="restart"
    android:repeatCount="10"
    android:toDegrees="360">
</rotate>

活动:

logo = (ImageView) findViewById(R.id.imageViewToRotate);


rotation = AnimationUtils.loadAnimation(this, R.anim.first_animation_splash);
rotation.setAnimationListener(new AnimationListener() {

            @Override
            public void onAnimationStart(Animation animation) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationRepeat(Animation animation) {
                if(animation.getDuration()>100)
                    animation.setDuration(animation.getDuration()/2);
                else
                    logo.clearAnimation();
            }

            @Override
            public void onAnimationEnd(Animation animation) {
                // TODO Auto-generated method stub

            }
        });

@Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if(hasFocus){
            logo.startAnimation(rotation);
        }
    }

但它继续旋转相同的持续时间10次....我该如何解决?谢谢!

2 个答案:

答案 0 :(得分:0)

试试这个:

  • 没有动画自动重启
  • onAnimationEnd()中,更改您的持续时间并再次致电startAnimation()

我的猜测是动画对象的某些(或全部)更改在动画中间无法识别。

答案 1 :(得分:0)

如果您希望发生的是动画在持续时间小于或等于100时结束,则您可以将logo.clearAnimation()替换为animation.end()