Android动画重复->图像动画集

Android Animation repeat -> image animation set

我正在尝试缩放图像,旋转它,向后旋转它,然后将它缩放到原始大小。 这已经可以正常工作了,但我不知道如何无限地重复这个动画集(android:repeatCount="infinite" 对我不起作用)。

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:shareInterpolator="true"
android:repeatCount="infinite"
>
<scale
    android:fromXScale="1.0"
    android:toXScale="4.0"
    android:fromYScale="1.0"
    android:toYScale="4.0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="700"
   />
<rotate
    android:fromDegrees="0"
    android:toDegrees="360"
    android:pivotX="50%"
    android:pivotY="50%"
    android:startOffset="700"
    android:duration="2000"
    />
<rotate
    android:fromDegrees="360"
    android:toDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:startOffset="2700"
    android:duration="2000"

    />

<scale
    android:fromXScale="1.0"
    android:toXScale="0.25"
    android:fromYScale="1.0"
    android:toYScale="0.25"
    android:pivotX="50%"
    android:pivotY="50%"
    android:startOffset="4700"
    android:duration="700"
    />
</set>

并在 Activity 中:

ImageView imageView = (ImageView) findViewById(R.id.imageView2);
Animation rotateAndScale = AnimationUtils.loadAnimation(this, R.anim.rotate_z);
imageView.startAnimation(rotateAndScale);

<set> xml 中的标记实施不当,无法正常工作。完整解释在这里:Android animation does not repeat

你应该做的是使用监听器和方法来使用循环来永远滚动动画。

public void startAnimation() {

        View component= findViewById(R.id.imageView2);
        component.setVisibility(View.VISIBLE);

        Animation anim = AnimationUtils.loadAnimation(this, R.anim.rotate_z);
        anim.setAnimationListener(new AnimationListener() {

            @Override
            public void onAnimationEnd(Animation arg0) {
                Animation anim = AnimationUtils.loadAnimation(this, R.anim.rotate_z);
                anim.setAnimationListener(this);
                component.startAnimation(anim);

            }

            @Override
            public void onAnimationRepeat(Animation arg0) {
                // TODO Auto-generated method stub

            }

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

            }

        });

        component.startAnimation(anim);

}