Анимация перезапускается, хотя ещё не закончилась

У меня есть активность, в ней есть кнопка. При её нажатии создаётся ImageView, добавляется в layout и к картинке применяется анимация. Проблема собственно в том, что при нажатии кнопки несколько раз анимация перезапускается на всех ImageView не закончившись

Вот код активности:

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void onClick(View v) {
        ImageView img = new ImageView(this);
        RelativeLayout layout = findViewById(R.id.layout);
        Random rnd = new Random();
        int x = rnd.nextInt(600);
        int y = rnd.nextInt(600);
        layout.addView(img, 50, 50);
        img.setX(x);
        img.setY(y);
        img.startAnimation(AnimationUtils.loadAnimation(this, R.anim.alpha_anim));
    }
}


Ответы (1 шт):

Автор решения: Andrew

Я бы предложил воспользоваться ValueAnimator:

ValueAnimator animator = ValueAnimator.ofInt(0, 100);
animator.setDuration(2000);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        int value = (int) animation.getAnimatedValue();
    }
});
animator.start();

в слушателе переменная value будет расти от 0 до 100, и когда она будет равна 100, то вы сможете включить кнопку снова. Так же стоит добавить animator:

<animator xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:valueFrom="20"
    android:valueTo="80"
    android:startOffset="100"
    android:repeatCount="4"
    android:repeatMode= "restart"
    android:valueType="intType"></animator>

Вот тут есть интересный туториал по анимированию.

→ Ссылка