繁体   English   中英

如何在 Android 中为视图设置动画并使其保持在新的位置/大小?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM