3

我想为ImageView创建一个动画,它旋转图像,同时从 100% 缩放到 0% 并从不透明淡入透明(SET 1),然后反转动画(SET 2)。两个动画集如果一个一个就可以工作,但是如果我把它们放在一起我什么都看不到,因为动画集 2 的起始值会立即应用,即使它的子动画集的 startOffset 设置为在动画集之后开始1已完成。我想我已经理解应该使用fadeAfterfadeBefore来避免在动画集 2 开始之前应用它的开始值,但它对我不起作用。我也试过fadeAfter在 SET 1 中设置为 true,删除 SET 2,看看它是否有效,即 SET 1 的转换是否在结束后持续存在,但它再次不起作用.. 那么,是否有可能产生我想要的结果下面的动画,也许使用了 fadeAfterfadeBeforefillEnabled属性?它应该与ImageView视图一起使用吗?

动画 XML

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <!-- SET 1 -->
    <set
        android:interpolator="@android:anim/decelerate_interpolator"
        android:shareInterpolator="true" >
        <alpha android:fromAlpha="1"
            android:toAlpha="0"
            android:duration="1000"
            android:startOffset="500"/>
        <rotate
            android:duration="1000"
            android:fromDegrees="0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:startOffset="500"
            android:toDegrees="720" />

        <scale
            android:duration="1000"
            android:fromXScale="100%"
            android:fromYScale="100%"
            android:pivotX="50%"
            android:pivotY="50%"
            android:startOffset="500"
            android:toXScale="0%"
            android:toYScale="0%" />
    </set>

    <!-- SET 2 -->
    <set
        android:interpolator="@android:anim/accelerate_interpolator"
        android:shareInterpolator="true">
         <alpha android:fromAlpha="0"
            android:toAlpha="1"
            android:duration="1000"
            android:startOffset="1500"/>
        <rotate
            android:duration="1000"
            android:fromDegrees="0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toDegrees="720"
        android:startOffset="1500" />

        <scale
            android:duration="1000"
            android:fromXScale="0%"
            android:fromYScale="0%"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toXScale="100%"
            android:toYScale="100%"
        android:startOffset="1500" />
    </set>
</set>

动画开始在 JAVA 代码中

ImageView iv = (ImageView) findViewById(R.id.image_view);
Animation animation = AnimationUtils.loadAnimation(this, R.anim.test_animation);
iv.startAnimation(animation);

动画重复测试

我也尝试删除 SET 2 并在startAnimation之前添加以下代码,但动画不会以相反的顺序重复(我也可以指定 RESTART 和 X 重复周期,但它不起作用)。有什么想法或建议吗?!

animation.setRepeatCount(1);
animation.setRepeatMode(Animation.REVERSE);
4

0 回答 0