[英]How to animate a view in Android and have it stay in the new position/size?
我目前在我的 Android 应用中有一个视图,并且该视图正在播放帧动画。 我想为视图设置动画以将其大小增加到 150%。 当我对其应用缩放动画并完成缩放动画时,我希望查看器在 Activity 的其余生命周期中保持该新大小。 不幸的是,当放大动画完成时,视图会恢复到原始大小。 我怎样才能让它保持新的动画转换?
我正在使用
myView.startAnimation(AnimationUtils.loadAnimation(mContext,R.anim.scaleUp150));
谢谢!
确保将以下属性添加到动画 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
也请欣赏其他答案,帮助了我:)祝你好运!
现在它变得非常容易:
view.animate().x(valueX).y(valueY).setDuration(500).start();
(在这个片段中使用了 ViewPropertyAnimator)。
也可以附加多个其他选项。
视图将位于新位置。
编辑:Qlimax 的答案更好,但由于 OP 没有返回更改复选标记并且我无法删除已接受的答案,我将其复制到此处:只需设置 fillAfter=true fillEnabled=true
我的原始答案(有效,但相比之下有点荒谬)如下:
为了在动画后按预期工作,至少根据此线程,您必须编写一个onAnimationEnd
处理程序,并在其中手动调整视图的“真实”(转换前)边界以匹配最终结果比例动画。
将 android:fillAfter="true" 放在 SET 标签中 - 因为将它们放在动画标签中会将它们限制在“过渡参数”或“动画期间/动画参数”中。 SET 中的参数将在完成动画后应用您正在寻找的转换。
实际上,由于您使用的动画似乎是嵌入在 Android 框架中的动画,我不确定您是否可以更改其中的任何内容。
但是,您可以按照文档中的示例创建自己的动画。 如果您希望在动画结束后保持缩放,则必须放置 android:fillAfter="true"。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.