如何在 Android 中动画一个视图,并让它保持在新的位置/大小?

我目前在我的 Android 应用程序中有一个视图,该视图正在播放帧动画。我想动画视图,以增加其大小为150% 。当我将一个缩放动画应用到它,并且缩放动画完成后,我希望查看器在活动生命周期的其余时间里保持在那个新的大小。不幸的是,现在当放大动画完成时,视图会快速恢复到原来的大小。我如何让它保持新的动画转换?

我在吸毒

myView.startAnimation(AnimationUtils.loadAnimation(mContext,R.anim.scaleUp150));

谢谢!

94566 次浏览

编辑: Qlimax 的答案更好,但是由于 OP 没有返回来更改选中标记,我也不能删除一个已接受的答案,所以我将把它复制到这里: 只需设置 fill After = true fill Enable = true

我最初的答案(这个答案很有效,但相比之下有点荒谬)如下:

为了让动画后的东西按照预期工作,至少根据 这根线,你必须编写一个 onAnimationEnd处理程序,在那里,手动调整你的视图的“真实”(转换前)界限,以匹配缩放动画的最终结果。

实际上,由于您正在使用的动画似乎是嵌入在 Android 框架中的,我不确定您能够改变其中的任何内容。
但是,您可以按照 文件中的例子创建自己的动画。如果您希望在动画结束后保持缩放,则必须放置 android: fill After = “ true”。

确保在动画 xml 中向 根元素根元素添加了以下属性:

android:fillAfter="true"
android:fillEnabled="true"

尝试从代码构造动画,并像下面这样设置属性

anim.setFillEnabled(true);
anim.setFillAfter(true);

如果你想把你的 Xml 中的动画,它可能需要这个帮助:

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


<translate
android:fromYDelta="0"
android:toYDelta="-20%p"
android:duration="7000" />


</set>

Https://stackoverflow.com/a/6519233/371749

也请欣赏另一个答案, 帮助我:)祝你好运!

在 SET 标记中放置 android: fill After = “ true”——将它们放置在动画标记中将它们限制在“转换参数”或“在/同时动画参数”中。SET 中的参数将在完成动画之后应用您正在查找的转换。

如今,这变得非常容易:

view.animate().x(valueX).y(valueY).setDuration(500).start();

(在此代码片段中使用了 ViewPropertyAnimator)。

也可以附加多个其他选项。

视图将位于新的位置。