我已经多次看到这个问题,人们需要在将视图翻译成动画后保持原样。修复很简单:只需将 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”那么它不会关心它从哪里开始。毕竟,它是一个“三角洲”,我们都知道它的意思是“变化”,无论起源如何。但这无济于事。悲伤的脸。