Переход от фрагмента к фрагменту: postponeEnterTransition () не работает - PullRequest
1 голос
/ 12 апреля 2019

Я использую переходы Android X для анимации контента с перемещением между двумя фрагментами в рамках одного и того же хостинга.

Я пытаюсь анимировать ImageView, изображение которого загружается с Glide и URL.

Проблема, которую я имею, заключается в том, что независимо от двух размеров ImageViews их размер равен 0 до загрузки изображения, , и поэтому переходы фиксируют неправильные значения макета и, следовательно, показывают уменьшающуюся анимацию ( анимация до размера 0).

Я читал об использовании postponeEnterTransition(), которое должно вместе с startPostponedEnterTransition() задержать переход на время между двумя вызовами.

Это схема:

  • Фрагмент A, изображение находится внизу экрана, ширина равна половине ширины экрана.
  • Фрагмент B, изображение вверху экрана, ширина соответствует ширине экрана.

При нажатии на изображение фрагмента A фрагмент загружается.

Во фрагменте B onCreate я установил свои переходы, используя setSharedElementEnterTransition(transitions). Тогда я сразу же позвоню postponeEnterTransition();

Во фрагменте B onCreateView я ожидаю предварительного рисования ImageView (с помощью ViewTreeObserver) после наложения макета, а затем я вызываю startPostponedEnterTransition().

Используя точку останова и прослушиватель на моих переходах, слушатель # onTransitionStarted запускается до того, как я достигаю обратного вызова перед отрисовкой, который доказывает, что переход захватил неправильные значения макета.

Также еще одно доказательство того, что postponeEnterTransition() не имеет никакого эффекта, удаление вызова на startPostponedEnterTransition() не удерживает переход навсегда.

Что я делаю не так? И, конечно же, при возвращении к Фрагменту A воспроизводится та же сокращающая анимация ...

1 Ответ

2 голосов
/ 24 апреля 2019

Вы должны установить переупорядочение, разрешенное во время транзакции фрагмента, добавив setReorderingAllowed(true) к вашей транзакции.

См. Документы Android и часть переупорядочения этого сообщения Криса Бейнса для большего контекста.

...