Как включить неприкрепленный вид в переход активности? - PullRequest
5 голосов
/ 04 июня 2019

Я рисую вид, который не привязан ни к одному из родителей.

Это украшение для RecyclerView.Представление прилипает к низу и исчезает, когда его встречная часть появляется в списке.

Все это прекрасно работает, но:

Когда я покидаю действие, представление не исчезаетс остальными взглядами в переходе деятельности.

Он остается до конца анимации и сразу же исчезает.

(см. Большой зеленый вид в демонстрационной версии)

Как включить этот неприкрепленный вид в выходной переход операции?


Я создал минимальный Android Studio Project для репликации проблемы: https://github.com/Ostkontentitan/transition-issue-demo

( Чтобы лучше увидеть проблему, возможно, установите масштаб анимации вашего телефона на> = 5 )


Вот демо:

Ответы [ 2 ]

3 голосов
/ 11 июня 2019

Добавьте transitionName в XML-макет для RecyclerView.

Анимация перехода, которую вы видите, происходит из-за ActivityOptions.makeSceneTransitionAnimation(this@ItemListActivity), и если вы добавляете transitionName к представлению, она работает нормально.

enter image description here

0 голосов
/ 05 июня 2019

Не слишком образованное предположение

(потому что я не пробовал и не использовал Transition Framework в течение нескольких месяцев)

Способ TF(Transition Framework) работает путем вычисления начальных / конечных значений перехода и выполнения анимаций, необходимых для достижения этой цели.

Декорации RecyclerView - это не «виды», которые являются частью макета, поэтому TF даже не подозревает, что они существуют.Конечно, он знает о вашем RecyclerView, потому что он содержится в анимированной ViewGroup.

Возможно, вы уже знали это, но в любом случае, я думаю, что я попытался бы здесь сделать, это создатьпользовательский переход структуры перехода (их не сложно сделать, вы даже можете проверить TransitionEverywhere и посмотреть, как эта библиотека реализует некоторые отсутствующие переходы в структуре);в вашем CustomTransition вы можете затем попытаться интерполировать значения анимации, чтобы представление рециркулятора могло перекраивать по мере продвижения анимации (например, анимированное значение альфа, ваш пользовательский декоратор "рисовал бы", используя указанную альфа).

Теперь ... по правде говоря, мне когда-то приходилось делать нечто подобное, когда пользовательский переход "приводил в движение" несколько внешних представлений (по причинам в то время ) :), но ...это было , а не украшение элемента RecyclerView, мои были просто "представлениями", поэтому я не уверен, что вы можете сделать это таким образом с украшением.

Я думаю, стоит попробовать.

...