You’ve fallen victim to the great misunderstanding everyone first makes about Android animations: the animated ImageView
(or whatever kind of view) isn’t actually moving (or scaling or rotating or fading). It’s all a trick… an animation is essentially some last-minute instructions to the screen composition engine to offset the view by x/y, rotate by z, etc. The view’s underlying position / size / angle / alpha never really changes.
Therefore when the animation ends your image appears to snap back to the starting point, because it never actually left it.
That said, you can achieve what you want in a simple way by adding android:fillAfter="true"
to your <translate>
tag. Just bear in mind that the image hasn’t really moved. If you need to update your layout at animation end, hook up an AnimationListener
and do it in onAnimationEnd()
.