Как добавить задержку между анимациями

У меня проблема с анимацией в андроиде. У меня есть свой animation_char.xml:

<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
    android:duration="300"
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toAlpha="1.0"/>
</set>

Это нормально, но в моей MainActivity я хочу запускать анимацию одну за другой. Поэтому я создал метод, чтобы упростить его и просто изменить ImageView

public void animation(ImageView imageView){
    animation = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.animation_char);
    imageView.startAnimation(animation);
}

А для последовательной анимации я пытаюсь использовать AnimatorSet. Но насколько я читал, AnimatorSet работает с Animator, а не с Animation. Итак, мой вопрос: есть ли способ загрузить анимацию в аниматор?? Или я должен использовать другой способ, чтобы достичь того, что я хочу сделать? Заранее спасибо!

РЕДАКТИРОВАТЬ Я изменил свой метод, и теперь я пытаюсь использовать его, но проблема в том, что все изображения появляются одновременно, как я могу добавить некоторую задержку между анимациями?

public void animation() {
    animation= AnimationUtils.loadAnimation(getApplicationContext(),R.anim.animation_char);

            w.startAnimation(animation);
            a.startAnimation(animation);
            r.startAnimation(animation);     
}

person Alonso Ato Neyra    schedule 29.11.2015    source источник


Ответы (3)



Вы должны использовать класс AnimationSet вместо AnimatorSet.

Например

AnimationSet as = new AnimationSet(true);
as.setFillEnabled(true);
as.setInterpolator(new BounceInterpolator());
as.addAnimation(firstAnim);
as.addAnimation(secondAnim);
as.setDuration(1000);
imageView.startAnimation(as);
person karvoynistas    schedule 29.11.2015
comment
Но у AnimationSet нет никакого playSequentially метода - person Sourabh; 30.11.2015
comment
Они для AnimatorSet, а не для AnimationSet - person Sourabh; 30.11.2015
comment
Итак, попробуйте поиграть с методами setStartOffset и setDuration для firstAnim и secondAnim. - person karvoynistas; 30.11.2015
comment
Не работает @karvoynistas, у меня есть три изображения, и я хочу отображать их одно за другим. Я застрял в этой точке! я отредактировал свой вопрос - person Alonso Ato Neyra; 30.11.2015

Выкладываю сюда, может кому поможет...

Я сделал что-то вроде этого. У меня есть 3 изображения, которые я хочу упасть один за другим.

note1 = findViewById(R.id.note1);
note1.setVisibility(View.INVISIBLE);
note2 = findViewById(R.id.note2);
note2.setVisibility(View.INVISIBLE);
note3 = findViewById(R.id.note3);
note3.setVisibility(View.INVISIBLE);

Настройка видимости, чтобы они не показывались изначально

А затем создайте 3 анимации

Animation slideDown = AnimationUtils.loadAnimation(this, R.anim.slide_down);
        note1.startAnimation(slideDown);

final Animation slideDown2 = AnimationUtils.loadAnimation(SplashScreen.this, R.anim.slide_down);
    
final Animation slideDown3 = AnimationUtils.loadAnimation(SplashScreen.this, R.anim.slide_down);

Следующим шагом будет добавление прослушивателей событий, добавленных @Divers:

 slideDown.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                note1.setVisibility(View.VISIBLE);
                note2.startAnimation(slideDown2);
                slideDown2.setAnimationListener(new Animation.AnimationListener() {

                    @Override
                    public void onAnimationStart(Animation animation) {

                    }

                    @Override
                    public void onAnimationEnd(Animation animation) {
                        note3.startAnimation(slideDown3);
                        note2.setVisibility(View.VISIBLE);
                        slideDown3.setAnimationListener(new Animation.AnimationListener() {
                            @Override
                            public void onAnimationStart(Animation animation) {

                            }

                            @Override
                            public void onAnimationEnd(Animation animation) {
                                note3.setVisibility(View.VISIBLE);
                            }

                            @Override
                            public void onAnimationRepeat(Animation animation) {

                            }
                        });
                    }

                    @Override
                    public void onAnimationRepeat(Animation animation) {

                    }
                });
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });

И это все

Моя анимация xml что-то вроде

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="800"
        android:fromXDelta="0%"
        android:fromYDelta="-50%p"
        />

    <alpha
        android:duration="500"
        android:fromAlpha="0.1"
        android:toAlpha="1.0"
        />
</set>
person Adriel Iclodean    schedule 21.04.2021