У меня есть 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, если первая еще не закончена и мгновенно показывает конец второй анимации. Могу ли я достичь своей цели?