Slight improvements to pop back animation

This commit is contained in:
Jays2Kings 2023-10-23 11:27:01 -07:00
parent 898902b9c4
commit c280dd3098
3 changed files with 7 additions and 8 deletions

View file

@ -13,7 +13,6 @@ import androidx.interpolator.view.animation.LinearOutSlowInInterpolator
import com.bluelinelabs.conductor.ControllerChangeHandler import com.bluelinelabs.conductor.ControllerChangeHandler
import com.bluelinelabs.conductor.changehandler.AnimatorChangeHandler import com.bluelinelabs.conductor.changehandler.AnimatorChangeHandler
import eu.kanade.tachiyomi.ui.main.MainActivity import eu.kanade.tachiyomi.ui.main.MainActivity
import kotlin.math.max
import kotlin.math.roundToLong import kotlin.math.roundToLong
class CrossFadeChangeHandler : AnimatorChangeHandler { class CrossFadeChangeHandler : AnimatorChangeHandler {
@ -98,11 +97,10 @@ class CrossFadeChangeHandler : AnimatorChangeHandler {
Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE
) { ) {
animatorSet.interpolator = if (MainActivity.backVelocity != 0f) { animatorSet.interpolator = if (MainActivity.backVelocity != 0f) {
DecelerateInterpolator(max(1f, MainActivity.backVelocity)) DecelerateInterpolator(MainActivity.backVelocity)
} else { } else {
LinearOutSlowInInterpolator() LinearOutSlowInInterpolator()
} }
MainActivity.backVelocity = 0f
} }
return animatorSet return animatorSet
} }

View file

@ -28,6 +28,7 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.Window import android.view.Window
import android.view.WindowManager import android.view.WindowManager
import android.view.animation.DecelerateInterpolator
import androidx.activity.BackEventCompat import androidx.activity.BackEventCompat
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
@ -278,7 +279,7 @@ open class MainActivity : BaseActivity<MainActivityBinding>() {
velocityTracker.addMovement(motionEvent) velocityTracker.addMovement(motionEvent)
motionEvent.recycle() motionEvent.recycle()
velocityTracker.computeCurrentVelocity(2, 5f) velocityTracker.computeCurrentVelocity(2, 5f)
backVelocity = max(1f, velocityTracker.getAxisVelocity(MotionEvent.AXIS_X)) backVelocity = max(1f, abs(velocityTracker.getAxisVelocity(MotionEvent.AXIS_X)))
} }
lastX = 0f lastX = 0f
lastY = 0f lastY = 0f
@ -564,8 +565,7 @@ open class MainActivity : BaseActivity<MainActivityBinding>() {
binding.appBar.isVisible = true binding.appBar.isVisible = true
binding.appBar.alpha = 1f binding.appBar.alpha = 1f
if (binding.backShadow.isVisible && !isPush) { if (binding.backShadow.isVisible && !isPush) {
val alpha = binding.backShadow.alpha val bA = ObjectAnimator.ofFloat(binding.backShadow, View.ALPHA, 0f)
val bA = ObjectAnimator.ofFloat(binding.backShadow, View.ALPHA, alpha, 0f)
from?.view?.let { view -> from?.view?.let { view ->
bA.addUpdateListener { bA.addUpdateListener {
binding.backShadow.x = view.x - binding.backShadow.width binding.backShadow.x = view.x - binding.backShadow.width
@ -581,7 +581,8 @@ open class MainActivity : BaseActivity<MainActivityBinding>() {
binding.backShadow.isVisible = false binding.backShadow.isVisible = false
nav.x = 0f nav.x = 0f
} }
bA.duration = 175 bA.duration = 150
bA.interpolator = DecelerateInterpolator(backVelocity.takeIf { it != 0f } ?: 1f)
bA.start() bA.start()
} }
if (!isPush || router.backstackSize == 1) { if (!isPush || router.backstackSize == 1) {
@ -599,6 +600,7 @@ open class MainActivity : BaseActivity<MainActivityBinding>() {
) { ) {
to?.view?.x = 0f to?.view?.x = 0f
nav.translationY = 0f nav.translationY = 0f
backVelocity = 0f
showDLQueueTutorial() showDLQueueTutorial()
if (!(from is DialogController || to is DialogController) && from != null) { if (!(from is DialogController || to is DialogController) && from != null) {
from.view?.alpha = 0f from.view?.alpha = 0f

View file

@ -29,7 +29,6 @@ import androidx.core.content.ContextCompat
import androidx.core.view.WindowInsetsCompat.Type.systemBars import androidx.core.view.WindowInsetsCompat.Type.systemBars
import androidx.core.view.WindowInsetsControllerCompat import androidx.core.view.WindowInsetsControllerCompat
import androidx.core.view.updateLayoutParams import androidx.core.view.updateLayoutParams
import androidx.interpolator.view.animation.LinearOutSlowInInterpolator
import androidx.transition.ChangeBounds import androidx.transition.ChangeBounds
import androidx.transition.ChangeImageTransform import androidx.transition.ChangeImageTransform
import androidx.transition.TransitionManager import androidx.transition.TransitionManager