Почему Transition.captureStartValues и Transition.captureEndValues имеют одинаковое представление с одинаковыми атрибутами?
У меня есть обычай Transition
используется в общих элементах между двумя видами деятельности.
Мой переход не работает, потому что TransitionValues
параметры имеют одинаковые View
с одинаковыми атрибутами в обоих методах, captureStartValues
а также captureEndValues
, Таким образом, мой переход не имеет, что делать, если начальное и конечное значения совпадают.
Почему это происходит?
2 ответа
В моем случае я хотел перейти между двумя элементами фона. После долгих поисков я понял, что представление, доставленное в метод onCaptureStartValues, является не фактическим представлением из первого действия, а скорее его представлением, созданным во втором действии из пакета, переданного инфраструктурой перехода.
Это противоречит интуиции, но в конечном итоге привело меня к следующей статье, в которой приведен информативный пример того, как добиться того, чего вы хотите.
https://medium.com/@belokon.roman/custom-transitions-in-android-f8949870bd63
В общем, вы используете SharedElementCallback для добавления пользовательских свойств в ваш объект перехода. Я действительно надеюсь, что такое поведение изменится в будущем, так как это выглядит как хакерство.
Вы должны установить SharedElementCallback
с помощью setEnterSharedElementCallback
и переопределить onSharedElementStart и onSharedElementEnd и установить прокрутку как в начале, так и в конце. Когда это полностью изменяет, конец вызывается перед началом, чтобы инвертировать переход.