アニメーションで翻訳した後、ビューをそのままにしておく必要があるという問題を何度も見てきました。修正は簡単です。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) に変換されます。
同じ翻訳を行いたいが、新しいスポットから発信したい場合はどうすればよいですか? ボタンを 1 回押すと、(0,0) から (20,20) になります。もう一度ヒットすると、(40,40)、(60,60) などになります。
XML でそれを行う簡単な方法はありますか、またはモーションごとに常に更新される変数 (START_LOCATION など) を作成する必要がありますか?
その時点で、これを Java で問題なく実行し、XML を忘れることは理にかなっているでしょうか? XML が Java に比べてどれだけコンパクトでシンプルかという点は、実際には非常に気に入っていますが、必要に応じてしぶしぶ切り替えます。
編集私はちょうど賢い考えを持っていて、fromXDelta="0" (そして YDelta も同様) を削除しました。結局のところ、それは「デルタ」であり、起源に関係なく「変化」を意味することは誰もが知っています. しかし、それは何もしませんでした。悲しい顔。