Понимание активности обратных переходов
В настоящее время я использую пользовательский переход для общего элемента, когда запускаю действие B из действия A. Все работает отлично.
Я хочу использовать другой кастом Transition
это не связано с какими-либо общими элементами для обратного перехода из действия B обратно в действие A. Однако у меня возникли проблемы с несколькими частями:
- Как мне сказать платформе, что обратный переход не включает какие-либо общие элементы?
- Каковы начальные и конечные значения для перехода в обратном переходе? Для входного перехода я в основном манипулировал представлениями действия B, поскольку они нарисованы поверх представления A. Что происходит в обратном переходе?
Ценю любую помощь, которую я могу получить!
РЕДАКТИРОВАТЬ:
Дальнейшее расследование показало, что мой обратный переход createAnimator
даже не звонят, хотя я звоню setSharedElementReturnTransition
, Но я знаю, что вызов set что-то делает, потому что теперь он не пытается изменить исходную анимацию ввода (поведение по умолчанию), а просто перекрывает два представления.
РЕДАКТИРОВАТЬ № 2:
Посмотрев на ответ Джорджа Маунта, я добавил
@Override
public void captureStartValues(TransitionValues transitionValues) {
transitionValues.view.setVisibility(View.VISIBLE);
}
@Override
public void captureEndValues(TransitionValues transitionValues) {
transitionValues.view.setVisibility(View.INVISIBLE);
}
Это теперь вызывает мой обратный переход createAnimator
по крайней мере запустить, хотя анимация все еще странная. Почему видимость имеет значение?
2 ответа
Я на самом деле нашел виновника, который был причиной моего обратного перехода createAnimator
не бежать. По-видимому, если среда перехода считает, что начальное и конечное состояния для переходных представлений одинаковы, она не создаст аниматора. Таким образом, добавив некоторые фиктивные, но разные значения в captureStartState
а также captureEndState
наконец, заставил мой обратный переход работать правильно.
- Вы должны установить SharedElementCallback и в onMapSharedElements очистить карту общих элементов. Это исключит общий элемент из вашего перехода.
- Это зависит от того, о каком переходе вы говорите. В частности, значениями конца и конца возвращаемого перехода являются View.VISIBLE и View.INVISIBLE. Но при возврате происходит несколько переходов:
Возвратный переход: неиспользуемые элементы удаляются со сцены в действии B путем изменения их видимости.
Переход возврата общего элемента: общий элемент в действии B начинается там, где он находится, когда finishAfterTransition
вызывается и заканчивается там, где действие А говорит, что совместно используемый элемент. Это можно отрегулировать с помощью SharedElementCallback
"s onSharedElementStart
а также onSharedElementEnd
, которые вызываются в обратном порядке при возврате.
Повторно введите переход: неиспользуемые представления элементов из Действия A изменяют их видимость.
Переход в общий элемент повторного входа: обычно ничего, но общий элемент может сделать что-то особенное после того, как он попадет в действие А.