我目前在Android应用中有一个视图,视图正在播放帧动画。我想为视图设置动画,将其大小增加到150%。当我对其应用缩放动画并完成缩放动画时,我希望视图在活动的其余部分生命周期中保持新的大小。不幸的是,当放大动画完成时,视图会快速恢复到原始大小。如何才能保持新的动画转换?
我正在使用
myView.startAnimation(AnimationUtils.loadAnimation(mContext,R.anim.scaleUp150));
谢谢!
答案 0 :(得分:148)
确保将以下属性添加到动画xml中的根元素:
android:fillAfter="true"
android:fillEnabled="true"
答案 1 :(得分:52)
尝试从代码构建动画并设置像这样的属性
anim.setFillEnabled(true);
anim.setFillAfter(true);
答案 2 :(得分:30)
如果您想将动画放入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
还请欣赏其他答案, 帮帮我:)祝你好运!
答案 3 :(得分:19)
如今它变得非常简单:
view.animate().x(valueX).y(valueY).setDuration(500).start();
(在此片段中使用了ViewPropertyAnimator)。
可以附加多个其他选项。
视图将位于新位置。
答案 4 :(得分:2)
我的原始答案(有效,但相比之下有点荒谬)如下:
为了让动画在动画之后按预期工作,至少根据this thread,你必须编写一个onAnimationEnd
处理程序,并在那里,手动调整“真实”(转换前) )视图的边界以匹配缩放动画的最终结果。
答案 5 :(得分:1)
实际上,由于您使用的动画似乎是嵌入在Android框架中的动画,我不确定您是否可以更改其中的任何内容。
但是,您可以按照the example in the documentation创建自己的动画。如果你想在动画结束后保留缩放比例,你必须把android:fillAfter =“true”。
答案 6 :(得分:1)
将SET:fillAfter =“true”放在SET标签中 - 因为将它们放入动画标签会将它们限制为“转换参数”或“在/动画参数期间”。 SET中的参数将在完成动画后应用您正在寻找的变换。