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

时间:2015-11-04 11:12:20

标签: android android-animation

我正在尝试缩放图像,旋转图像,向后旋转图像然后将图像缩放到其原始尺寸。 这已经完成了,但我无法弄清楚如何无限重复这个动画集(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>

并在活动中:

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

1 个答案:

答案 0 :(得分:1)

xml中的

<set>标记执行不正确,并且不能正常工作。完整的表达:Android animation does not repeat

你应该做的是使用监听器和方法来使用recurency永远推动这个动画。

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);

}