clearAnimation() - 如何让动画保持最终位置?

时间:2012-08-13 14:39:00

标签: android android-animation

想象一下这个场景,我有一个从左到右穿过屏幕的位图和一个按下按钮,按下后会调用clearAnimation()

按下此按钮时,它会在行进的位图上调用clearAnimation(),但位图会保留在屏幕上的位置(介于左右之间)。

我真正希望发生的是当按下按钮时,位图最终位于动画点的末尾(屏幕右侧)

知道如何实现这一目标吗?下面是我的动画代码

questionAnimation = AnimationUtils.loadAnimation(QuestionActivity.this, R.anim.left_to_right);
questionWrapper.setBackgroundDrawable(getResources().getDrawable(R.drawable.imageview_rounded));
questionWrapper.startAnimation(questionAnimation);

1 个答案:

答案 0 :(得分:1)

我认为你的动画发生的事情是它的setFillAfter()默认设置为true,或者你在应用动画,java或xml之前将它设置为true所以首先你应该将setFillAfter设置为false或者你可以直接将setFillEnabled更改为false,就像在xml中应用于set

一样
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="false" >

<translate
    android:duration="300"
    android:fromYDelta="100%p"
    android:toYDelta="0" />

<alpha
    android:duration="300"
    android:fromAlpha="0.0"
    android:toAlpha="1.0" />

</set>

或者

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillEnabled="false" >

<translate
    android:duration="300"
    android:fromYDelta="100%p"
    android:toYDelta="0" />

<alpha
    android:duration="300"
    android:fromAlpha="0.0"
    android:toAlpha="1.0" />

</set>

因此,在这种情况下,当动画结束或清除时,它将不会保留视图图像(将图像暂停在中间),因此,当您清除动画时,必须设置图像的新位置,即通过代码设置在屏幕右侧或动画自然结束,因为你必须将实际视图(ImageView)放置到新的位置(因为这是由FillAfter先前处理但由于在按下清除动画时暂停视图的故障,你需要将其删除所以现在你必须通过设置ImageView的属性来覆盖其功能,如果它在RelativeLayout中,然后将AlignParentRight的属性设置为true。