android:fillAfter
не меняет атрибуты вида. Это просто означает, что они рисуют на месте после завершения анимации, но их физические атрибуты одинаковы. Ваша анимация перевода, вероятно, анимируется относительно того, где они физически расположены. Также обратите внимание, что на самом деле представления не находятся в том месте, в котором вы их переместили, что означает, что если пользователь прикоснется к ним, касание не будет зарегистрировано. Они будут регистрироваться, если пользователь коснется того места, где он был раньше.
В этом случае вам нужно анимировать их из того места, в котором они в данный момент просматриваются, в то место, где вы хотите их видеть.
Возможное решение:
Слева направо:
TranslateAnimation (Animation.RELATIVE_TO_PARENT, 0.0, Animation.RELATIVE_TO_PARENT, 1.0, Animation.RELATIVE_TO_PARENT, 0.0, Animation.RELATIVE_TO_PARENT, 0.0);
Справа налево:
TranslateAnimation (Animation.RELATIVE_TO_PARENT, 1.0, Animation.RELATIVE_TO_PARENT, 0.0, Animation.RELATIVE_TO_PARENT, 0.0, Animation.RELATIVE_TO_PARENT, 0.0);
В этом случае я анимирую слева направо от 0% до 100% по отношению к родителю. При включенном fillAfter
вид (видимо) останется. После этого я анимирую справа налево от 100% до 0% относительно родителя.