Я собираюсь создать анимацию, которая вращает карту, делает ее невидимой, а когда становится невидимой, меняет некоторые свойства без анимации, и после того, как они делают это видимым с этим вращением.Итак, я попробовал это:
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)
передвнутренние изменения