动画翻译多次后,将Android视图保留在新位置?

时间:2013-07-01 05:37:51

标签: java android xml animation translation

我已经多次看过这个问题,人们需要在动画中翻译后保持视图。修复很简单:只需将fillAfter =“true”和fillEnabled =“true”添加到XML中。

这是有效的,视图确实在动画之后保留。但是,再次调用动画时,视图将重置为原始点并移动到同一位置。

例如,假设我的视图位于(0,0),我通过单击按钮调用此动画:

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true"
    android:fillEnabled="true" >

    <translate
        android:duration="100"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="20"
        android:toYDelta="20" >
    </translate>
</set>

按预期从(0,0)移动到(20,20)。但是,如果我再次点击按钮并调用相同的动画,它会神奇地跳回(0,0)并再次转换为(20,20)。

如果我想让它做同样的翻译,但是来自新的地方怎么办?所以我按下按钮一次,从(0,0)到(20,20)。我再次点击它,它到(40,40),然后(60,60),依此类推。

在XML中是否有一种简单的方法可以做到这一点,或者我是否需要创建一些在每次动作时不断更新的变量(如START_LOCATION?)

那时,我是否有理由在Java中完成这项工作并忘记XML?我实际上非常喜欢将XML与Java相比更紧凑和简单,但如果必须,我会不情愿地切换。

编辑我只是有一个聪明的主意,并从XDelta =“0”(以及YDelta)中删除,因为我想象你是否只给它“toXDelta”然后它不关心它从哪里开始。毕竟,这是一个“三角洲”,我们都知道这意味着“改变”,无论其来源如何。但那没有做任何事。 Sadface。

1 个答案:

答案 0 :(得分:1)

因此,当您使用普通视图动画为View设置动画时,您只需设置绘制它的位置的动画。您没有影响其在布局中的实际位置。假设您打算永久地更改View更改位置,您需要在动画完成后更新View的布局参数,以匹配您对动画所做的移动。