代码之家  ›  专栏  ›  技术社区  ›  justinl

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

  •  78
  • justinl  · 技术社区  · 16 年前

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

    谢谢!

    7 回复  |  直到 6 年前
        1
  •  149
  •   Gagan    9 年前

    在动画xml中:

    android:fillAfter="true" 
    android:fillEnabled="true"
    
        2
  •  52
  •   Mina Wissa    15 年前

    尝试从代码中构造动画并设置如下属性

    anim.setFillEnabled(true);
    anim.setFillAfter(true);
    
        3
  •  32
  •   Community Mohan Dere    9 年前

    如果你想 ,它可能需要以下帮助:

    <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

    另请回答,

        4
  •  22
  •   Andrew    11 年前

    现在变得很容易:

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

    (在此代码段中,使用了ViewPropertyImator)。

    视图将位于新位置。

        5
  •  2
  •   Walter Mundt    15 年前

    编辑:Qlimax的答案更好,但是由于OP没有返回来更改复选标记,并且我不能删除一个接受的答案,我将把它复制到这里:只需设置fillAfter=true fillEnabled=true

    我最初的回答(这是可行的,但相比之下有点可笑)如下:

    this thread ,你必须写一个 onAnimationEnd 处理程序,并在其中手动调整视图的“真实”(变换前)边界,以匹配缩放动画的最终结果。

        6
  •  1
  •   Sephy    16 年前


    the example in the documentation . 你必须把android:fillAfter=如果希望在动画结束后保持缩放,则为“true”。

        7
  •  1
  •   takrishna    13 年前

    放android:fillAfter=设置标签中的“true”-因为将它们放入动画标签将它们限制为“过渡参数”或“在设置参数动画期间/期间”。集合中的参数将在动画完成后应用您要查找的变换。