Я создаю собственную анимацию, которая перемещает наш фрагмент внутрь и наружу с позиции элемента, повернутой в представлении переработчика.Это также оживляет высоту фрагмента.Таким образом, происходит три анимации: 1. Перевод Y 2. Высота 3. Исчезновение. При открытии фрагмента все работает нормально, но при закрытии только высота фрагмента не меняется
class SlideFromPoint(val epicCenterRect: Rect) : Slide() {
override fun onAppear(sceneRoot: ViewGroup?, view: View?, startValues: TransitionValues?, endValues: TransitionValues?): Animator {
val translateAnimation = ObjectAnimator.ofFloat(view, "translationY",epicCenterRect.top.toFloat(),0f)
val fadeInAnimator = ObjectAnimator.ofFloat(view, View.ALPHA, 0f, 1f)
val heightAnimation = ValueAnimator.ofInt(epicCenterRect.height(),view!!.measuredHeight)
heightAnimation.addUpdateListener { value ->
val animatedValue = value.animatedValue as Int
view.layoutParams.height = animatedValue
view.requestLayout()
}
return animatorSet(translateAnimation,heightAnimation,fadeInAnimator)
}
override fun onDisappear(sceneRoot: ViewGroup?, view: View?, startValues: TransitionValues?, endValues: TransitionValues?): Animator {
val translateAnimation = ObjectAnimator.ofFloat(view, "translationY",0f,epicCenterRect.top.toFloat())
val fadeInAnimator = ObjectAnimator.ofFloat(view, View.ALPHA, 1f, 0f)
val heightAnimation = ValueAnimator.ofInt(view!!.measuredHeight,epicCenterRect.height())
heightAnimation.addUpdateListener { value ->
val animatedValue = value.animatedValue as Int
view.layoutParams.height = animatedValue
view.requestLayout()
}
return animatorSet(translateAnimation,heightAnimation,fadeInAnimator)
}
private fun animatorSet(translateAnimation: Animator, heightAnimation: Animator, fadeInAnimator: ObjectAnimator): AnimatorSet {
val animatorSet = AnimatorSet()
animatorSet.playTogether(listOf(translateAnimation,heightAnimation,fadeInAnimator))
return animatorSet
}
}
, но в аниматоре значений в onDisappear,анимированное значение устанавливается в layoutparams.Тем не менее это не меняется.Есть идеи почему?