Я делаю анимацию вращения с разными изображениями (например, горизонтальной рулеткой) по одному изображению за раз слева направо по экрану.
В каждом цикле анимации мне нужно менять изображение на случайное ссписок, поэтому я обнаружил, что если я использую повторяющуюся анимацию, то установка нового ImageResource в onAnimationRepeat объекта AnimationListener не обновляет мой ImageView.Я решил использовать пользовательский запуск следующей анимации из onAnimationEnd.Вот кусок кода:
ImageView image = (ImageView)(ImageView)findViewById(R.id.imageId);
Animation aMid = AnimationUtils.loadAnimation(this, R.anim.plant_middle);
aMid.setFillEnabled(true);
aMid.setFillAfter(true);
aMid.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
setRandomImageResource();
}
@Override
public void onAnimationRepeat(Animation animation) { }
@Override
public void onAnimationEnd(Animation animation) {
if(customCounter < SPIN_COUNT){
customCounter++;
image.startAnimation(aMid);
}
}
});
А Animation ixm довольно прост, он касается ImageView слева направо от экрана:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="true">
<translate
android:interpolator="@android:anim/linear_interpolator"
android:fromXDelta="-100%"
android:toXDelta="100%"
android:fromYDelta="0%"
android:toYDelta="0%"
android:duration="4000" />
</set>
Проблема в том, что между каждым циклом анимации ImageView появляется в центре экрана на очень короткий момент, как будто он летит справа налево, чтобы начать следующий цикл анимации, или как он мерцает в середине, где он изначально расположен вмакет XML.
Установка видимости для GONE на onAnimationEnd и VISIBLE на onAnimationEnd не решает нашу проблему.
Что делать?