@@ -31,6 +31,7 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout
3131import androidx.core.view.ViewCompat
3232import androidx.core.view.ViewGroupCompat
3333import androidx.core.view.WindowInsetsCompat
34+ import androidx.core.view.animation.PathInterpolatorCompat
3435import androidx.core.view.updateLayoutParams
3536import androidx.core.view.updatePadding
3637import androidx.core.widget.NestedScrollView
@@ -39,8 +40,6 @@ import androidx.fragment.app.viewModels
3940import androidx.navigation.findNavController
4041import androidx.navigation.fragment.findNavController
4142import androidx.navigation.fragment.navArgs
42- import androidx.transition.ChangeTransform
43- import androidx.transition.TransitionManager
4443import com.example.android.motion.R
4544import com.google.android.material.appbar.CollapsingToolbarLayout
4645import com.google.android.material.transition.MaterialContainerTransform
@@ -49,14 +48,14 @@ class CheeseArticleFragment : Fragment() {
4948
5049 companion object {
5150 const val TRANSITION_NAME_BACKGROUND = " background"
51+
52+ private val GestureInterpolator = PathInterpolatorCompat .create(0f , 0f , 0f , 1f )
5253 }
5354
5455 private val args: CheeseArticleFragmentArgs by navArgs()
5556
5657 private val viewModel: CheeseArticleViewModel by viewModels()
5758
58- private val cancelTransition = ChangeTransform ()
59-
6059 override fun onCreate (savedInstanceState : Bundle ? ) {
6160 super .onCreate(savedInstanceState)
6261
@@ -131,11 +130,13 @@ class CheeseArticleFragment : Fragment() {
131130 }
132131
133132 override fun handleOnBackProgressed (backEvent : BackEventCompat ) {
134- val progress = backEvent.progress
133+ val progress = GestureInterpolator .getInterpolation( backEvent.progress)
135134 if (initialTouchY < 0f ) {
136135 initialTouchY = backEvent.touchY
137136 }
138- val progressY = (backEvent.touchY - initialTouchY) / background.height
137+ val progressY = GestureInterpolator .getInterpolation(
138+ (backEvent.touchY - initialTouchY) / background.height
139+ )
139140
140141 // See the motion spec about the calculations below.
141142 // https://developer.android.com/design/ui/mobile/guides/patterns/predictive-back#motion-specs
@@ -156,10 +157,10 @@ class CheeseArticleFragment : Fragment() {
156157 }
157158
158159 override fun handleOnBackCancelled () {
159- TransitionManager .beginDelayedTransition(background, cancelTransition)
160160 initialTouchY = - 1f
161161 background.run {
162162 translationX = 0f
163+ translationY = 0f
163164 scaleX = 1f
164165 scaleY = 1f
165166 }
0 commit comments