Animate ViewPager Item и ViewPager от самого родителя почти одновременно - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть MainConstraintLayout и ViewPager в нем. Я хочу добиться двух анимаций практически одновременно. Во-первых, ViewPager будет скользить вниз с помощью анимации ConstraintSet. После небольшой задержки некоторые элементы в ViewPager будут перемещаться с помощью анимации ConstraintSet.

Кнопка ViewPager активирует activeAnimation2 ()

private fun activateAnimation2() {
        var animDur = 1000L
        if (!areAnimationsEnabled) {
            animDur = 0L
        }

        mainCSAnimation(500)
        Handler().postDelayed({vpCSAnimation(1000)}, 400)
        Handler().postDelayed({mainCSCircularIntroAnimation(1000)}, 600)

        initializeActiveSessionActivity()
        backgroundCalculationHandler.post(updateHistoryRecylcerViewLoop)
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
            tauIntroCard.elevation = 10f
            tauViewPager.elevation = 11f
        }

        if (wantToSeeHelper) mHandler.postDelayed({ startSecondTrainer() }, 3000)
    }



private fun mainCSAnimation(animDur: Long){
        val mainCS = ConstraintSet()
        mainCS.clone(tauMainConstLay)

        val transition = ChangeBounds().apply {
            duration = animDur
            interpolator = LinearOutSlowInInterpolator()
        }
        TransitionManager.beginDelayedTransition(tauMainConstLay, transition)

        if (resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT) {
            mainCS.connect(tauViewPager.id, ConstraintSet.TOP, tauHistoryRVBottomDivider!!.id, ConstraintSet.BOTTOM)
        }
        mainCS.setVerticalBias(tauViewPager.id, 0f)
        mainCS.applyTo(tauMainConstLay)
    }



private fun vpCSAnimation(animDur: Long) {
        val vpCS = ConstraintSet()
        vpCS.clone(msaConstraintLayout)

        val transition = ChangeBounds().apply {
            interpolator = AnticipateInterpolator()
            duration = animDur
        }
        TransitionManager.beginDelayedTransition(msaConstraintLayout, transition)

        vpCS.setHorizontalBias(addQuestionImg.id, .65f)
        vpCS.setHorizontalBias(rewinsImg.id, .35f)
        vpCS.setHorizontalBias(msaLeftEar.id, 0f)
        vpCS.setHorizontalBias(msaRightEar.id, 1f)
        vpCS.applyTo(msaConstraintLayout)
    }

Но когда activeAnimation2 () получает триггер, анимация mainCSAnimation работает нормально, но vpCSAnimation не получает анимацию. vpCSAnimation показывает момент окончания анимации.

Если я не ошибаюсь, я не могу запустить вторую анимацию в TransitionManager, если первая еще не закончена и мгновенно показывает конец второй анимации. Могу ли я достичь своей цели?

...