在API中取消动画后,将视图旋转返回到其原始状态< 11

时间:2014-04-13 18:53:47

标签: android android-animation

我在我的观点上运行摇动动画:

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="100"
    android:fromDegrees="-5"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="infinite"
    android:repeatMode="reverse"
    android:toDegrees="5" />

我根据用户需求取消动画,但视图在停止时保持旋转状态,我不想恢复原状。

以下是我停止动画的方式:

    if (animation != null) {
        animation.cancel();
        animation.reset();
    }

我无法使用setRotation(),因为我的最低API为9。

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

尝试view.clearAnimation()方法,清除视图上动画的所有效果

答案 1 :(得分:0)

您是否尝试过setRotation(0,0f);

编辑: 我知道,这需要API 11,您需要API 9及更高版本。 (在2014年支持API的宝贵理由很少,但是好吧,我们总是不能指明这一点。)也许是子类动画,这样当你&#34;取消&#34;它只是动画为0的旋转,然后调用super.cancel()。

答案 2 :(得分:0)

我使用了这个方法(代码在继承自View的类中):

private void returnToOriginalRotationState() {
    RotateAnimation animation = new RotateAnimation(0.0f, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f);
    animation.setInterpolator(new LinearInterpolator());
    animation.setDuration(1);
    animation.setFillAfter(true);

    startAnimation(animation);
}