У меня есть Activity с панелью инструментов (которая является частью анимации SharedElements Activity), и ниже этой панели инструментов расположены три ImageViews горизонтально рядом друг с другом. В своей реализации XML все три устанавливаются INVISIBLE.ImageViews мерцает, прежде чем они должны быть видны
То, что я пытаюсь сделать, - анимировать их последовательно «отбрасывая» из-за панели инструментов. Мое это реализация внешний:
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;
}
}
Как вы можете видеть, я итерацию через три ImageViews и начать анимацию для каждого из них, чтобы перейти от -300 X-позиции (которая находится позади панели инструментов), чтобы их нормальное положение. Эта анимация отлично работает - так же, как я хочу, но проблема в том, что перед тем, как все ImageViews ненадолго мерцают, что я не могу объяснить. Я пробовал отлаживать, но пока я просматриваю строки этой части, мой экран остается черным. Поэтому я не могу определить, где/почему вид становится видимым.
Возможно, вы можете помочь мне найти мою ошибку.
Спасибо, это мой рабочий код:
Для всех трех ImageViews:
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();
Спасибо, это работает, и я обновил свой вступительный пост. Но ваше предложение GONE не было оптимальным, потому что гравитация GridView, в которой объекты ImageViews сосредоточены по горизонтали, так что значки сбрасывались с середины только для перемещения их положения всякий раз, когда следующее изображение становилось видимым. Невидимый - лучший выбор за Gone. – Eyntschl
Рад, что я мог помочь, у меня не осталось много нового, но я рад, что мое предложение помогло. – Ali