0

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

当按下此按钮时,它会调用clearAnimation()移动位图,但位图会停留在屏幕上的位置(左右之间的某个位置)。

我实际上想要发生的是,当按下按钮时,位图结束在动画点的末尾(屏幕右侧)

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

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

1 回答 1

1

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

<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。

于 2012-08-13T15:02:45.873 回答