Я недавно работал с TransitionManager
и ConstraintLayout.Group
и обнаружил, что он очень глючит.
В конце концов я решил сбросить весь ConstraintLayout.Group
и создал код AnimationGroup
(аналогично in-xml
ConstraintLayout.Group
):
class AnimationGroup(vararg val views: View) {
var visibility: Int = View.INVISIBLE
set(value) {
views.forEach {
it.visibility = value
}
field = value
}
}
и функции расширения для Transition
:
private fun Transition.addTarget(animationGroup: AnimationGroup) {
animationGroup.views.forEach { viewInGroup ->
this.addTarget(viewInGroup)
}
}
Таким образом, вы можете сделать следующее(почти такой же код, но более простой xml - нет ConstraintLayout.Group
):
val headersGroup = AnimationGroup(
binding.cardSystemHeader,
binding.cardSimpleHeader,
binding.cardCombinedHeader
)
val slideIn = Slide()
slideIn.slideEdge = Gravity.BOTTOM
slideIn.mode = Slide.MODE_IN
slideIn.addTarget(headersGroup)
TransitionManager.beginDelayedTransition(binding.root as ViewGroup, slideIn)
headersGroup.visibility = VISIBLE