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

jus*_*inl 80 animation android

我目前在我的Android应用程序中有一个视图,视图正在播放帧动画.我想为视图设置动画,将其大小增加到150%.当我对其应用缩放动画并完成缩放动画时,我希望视图在活动的其余部分生命周期中保持新的大小.不幸的是,当放大动画完成时,视图会快速恢复到原始大小.我怎样才能保持新的动画转换?

我正在使用

myView.startAnimation(AnimationUtils.loadAnimation(mContext,R.anim.scaleUp150));
Run Code Online (Sandbox Code Playgroud)

谢谢!

Qli*_*max 148

确保将以下属性添加到动画xml中的根元素:

android:fillAfter="true" 
android:fillEnabled="true"
Run Code Online (Sandbox Code Playgroud)

  • 这才是真正的答案.**OP应该将此更改为接受的答案.**谢谢Qlimax !! (PS没有在开发指南的"动画"部分中记录,它只记录在动画类的javadoc中.这样的文档很差!) (7认同)
  • 在哪里放这个代码?在`<set ...> </ set>`或动画标签中(`translate` |`rotate` |`scale`)? (7认同)
  • 如下所述,您必须将其添加到set参数中 (5认同)
  • 这不起作用.我希望视图的实际大小随动画而变化.它只会改变内容.我正在将比例Y从1.0更改为0.0并且动画发生但是留下了以前视图的空白区域.此外,我尝试了View.GONE但是将其他视图捕捉到空白区域.我需要其他视图在缩小时遵循缩放视图的大小.如何让它工作? (3认同)

Min*_*amy 52

尝试从代码构建动画并设置这样的属性

anim.setFillEnabled(true);
anim.setFillAfter(true);
Run Code Online (Sandbox Code Playgroud)


cV2*_*cV2 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>
Run Code Online (Sandbox Code Playgroud)

/sf/answers/456346341/

请也欣赏其他答案, 帮助我:)祝你好运!


And*_*rey 19

如今它变得非常简单:

view.animate().x(valueX).y(valueY).setDuration(500).start();
Run Code Online (Sandbox Code Playgroud)

(在此片段中使用了ViewPropertyAnimator).

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

View将位于新位置.