Высота анимации при переходе фрагмента не работает - PullRequest
0 голосов
/ 25 октября 2018

Я создаю собственную анимацию, которая перемещает наш фрагмент внутрь и наружу с позиции элемента, повернутой в представлении переработчика.Это также оживляет высоту фрагмента.Таким образом, происходит три анимации: 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.Тем не менее это не меняется.Есть идеи почему?

...