Как выполнить одну анимацию, а затем другую

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

Мои анимации:

Fade1

<alpha xmlns:android = "http://schemas.android.com/apk/res/android"
       android:fromAlpha = "1.0"
       android:toAlpha = "0.0"
       android:duration = "1500"
/>

Fade2

<alpha xmlns:android = "http://schemas.android.com/apk/res/android"
       android:fromAlpha = "1.0"
       android:toAlpha = "0.0"
       android:duration = "3000"
/>

моя идея не работает

 private void animations_sequencing(){
        //The first anim start
        try{
            text.setText("Hello");
            text.startAnimation(AnimationUtils.loadAnimation(Main2Activity.this, R.anim.fade1));
            Thread.sleep(1500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        //The first anim is end, the seconde anim start
        try{
            text.setText("World");
            text.startAnimation(AnimationUtils.loadAnimation(Main2Activity.this, R.anim.fade2));
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
0
0
33
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

вы должны реализовать setAnimationListener, чтобы захватить, когда анимация закончится.

text.startAnimation(AnimationUtils.loadAnimation(Main2Activity.this, R.anim.fade1).setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {

                }

                @Override
                public void onAnimationEnd(Animation animation) {
                //start second animation
                }

                @Override
                public void onAnimationRepeat(Animation animation) {

                }
            }));
Ответ принят как подходящий

Вот как это сделать:

Animation anim2;

private void anim(){

    Animation anim = AnimationUtils.loadAnimation(Main2Activity.this, R.anim.fade);
        anim2 = AnimationUtils.loadAnimation(Main2Activity.this, R.anim.fade2);

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

        }
        @Override
        public void onAnimationEnd(Animation animation) {
            text.setText("World");
            text.startAnimation(anim2);
        }
        @Override
        public void onAnimationRepeat(Animation animation) {
        }

    });
        text.startAnimation(anim);
    }
}

Другие вопросы по теме