Android: делать что-то между двумя анимациями без задержки - PullRequest
0 голосов
/ 20 сентября 2019

Я собираюсь создать анимацию, которая вращает карту, делает ее невидимой, а когда становится невидимой, меняет некоторые свойства без анимации, и после того, как они делают это видимым с этим вращением.Итак, я попробовал это:

fab.setImageResource(R.drawable.ic_add);

final int duration = getResources().getInteger(android.R.integer.config_shortAnimTime);

ObjectAnimator rotation1 = ObjectAnimator.ofFloat(fab, "rotation", 0f, 360f);
ObjectAnimator rotation2 = ObjectAnimator.ofFloat(fab, "rotation", 0f, 360f);
ObjectAnimator hide = ObjectAnimator.ofFloat(fab, "alpha", 1f, 0f);
ObjectAnimator show = ObjectAnimator.ofFloat(fab, "alpha", 0f, 1f);
hide.addListener(new AnimatorListenerAdapter() {
    @Override
    public void onAnimationEnd(Animator animation) {
        super.onAnimationEnd(animation);
        // TODO make changes after hiding like
        fab.setImageResource(R.drawable.ic_done);
    }
});

AnimatorSet set = new AnimatorSet();
set.play(rotation1).with(hide);
set.play(rotation2).with(show).after(hide);
set.setDuration(duration);
set.start();

, но проблема в том, что показ анимации не ждет внутренних изменений и делает анимацию несколько уродливой.

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

Редактировать:

Это особенно заметно, когда внутренние изменения имеют некоторое время.

для тестирования мы добавляем Thread.sleep(2000) передвнутренние изменения

...