Как использовать LottieAnimationView в SharedElementTransition? - PullRequest
0 голосов
/ 29 октября 2019

Я решил использовать анимацию Лотти, чтобы переключиться с активности на активность. Моя анимация занимает весь экран, и я хотел бы, чтобы половину времени анимации воспроизводили в первом упражнении, а оставшееся время - во втором.

Я пытался использовать переход с общим элементом, но он не работает должным образом, потому что когдасначала начинается новое действие, а я вижу новое действие, а затем через несколько миллисекунд возобновляется анимация Лотти. Я бы не хотел показывать новое действие, пока анимация Лотти не закончилась

XML-файл первого действия

<RelativeLayout android:layout_width="match_parent"
                android:layout_height="match_parent"
                xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto">

    <com.airbnb.lottie.LottieAnimationView android:layout_width="match_parent"
                                           android:layout_height="match_parent"
                                           android:id="@+id/newActivityAnimation"
                                           app:lottie_fileName="transitionAnimation.json"
                                           android:scaleType="centerCrop"
                                           android:elevation="5dp"
                                           android:transitionName="sharedNewActivityTransition"

    />

XML-файл второго действия

<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".ui.MenuActivity">

    <com.airbnb.lottie.LottieAnimationView android:layout_width="match_parent"
                                           android:layout_height="match_parent"
                                           app:lottie_fileName="transitionAnimation.json"
                                           android:scaleType="centerCrop"
                                           android:id="@+id/changeActivityAnimationMenu"
                                           android:elevation="5dp"
                                           android:transitionName="sharedNewActivityTransition"

    />

</RelativeLayout>

Вот функция, которая запускаетсяизменение активности

   override fun onLanguageClickListener(position: Int) {
        animateCollapseMenuSlide(isMenuCollapsed)
        newActivityAnimation.setMaxFrame(19)
        delay.delayedFunction({newActivityAnimation.playAnimation()},200)
        delay.delayedFunction({changeActivity()},1000)


    }


.
.
.


 private fun changeActivity() {
        val intent = Intent(this,MenuActivity::class.java)
        intent.flags = Intent.FLAG_ACTIVITY_NO_ANIMATION
        val options = ActivityOptionsCompat.makeSceneTransitionAnimation(this,activityTransitionAnimation,
            "sharedNewActivityTransition")
        startActivity(intent,options.toBundle())
    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...