У меня есть действие с панелью инструментов (которая является частью анимации входа в действие SharedElements), а под этой панелью инструментов расположены три изображения ImageView, расположенные горизонтально рядом друг с другом. В их реализации XML все три установлены НЕВИДИМЫМИ.
То, что я пытаюсь сделать, это анимировать их последовательно, «отбрасывая» из-за панели инструментов. Моя реализация такова:
int delay = 500;
for (int y = 0; y < 3; y++) {
ObjectAnimator oa = ObjectAnimator.ofFloat(imageViews[y],
"translationY", -300, 0);
oa.setDuration(600);
oa.setStartDelay(delay);
oa.start();
imageViews[y].setVisibility(View.VISIBLE);
delay = delay+100;
}
}
Как вы можете видеть, я перебираю три ImageView и запускаю анимацию для каждого из них, чтобы перейти от -300 X-позиции (которая находится за панелью инструментов) к их нормальному положению. Эта анимация отлично работает - именно так, как я хочу, но проблема в том, что прямо перед тем, как все ImageViews кратковременно мерцают, что я не могу объяснить. Я пытался отладить, но пока я просматриваю строки этой части, мой экран остается черным. Поэтому я не могу определить, где/почему Views становятся видимыми.
Может быть, вы можете помочь мне найти мою ошибку.
Спасибо, это мой рабочий код:
Для всех трех изображений ImageView:
ObjectAnimator anim1Pin = ObjectAnimator.ofFloat(img_pinned, "translationY", -300, 0);
anim1Pin.setDuration(ANIMATON_DURATION);
anim1Pin.setStartDelay(300);
anim1Pin.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
img_pinned.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animator animation) {
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
И AnimatorSet:
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playTogether(anim1Pin, anim2Alarm, anim3LED);
animatorSet.start();