@@ -6,19 +6,14 @@ import android.util.AttributeSet
66import android.view.Gravity
77import android.view.KeyEvent
88import android.view.MotionEvent
9- import android.view.animation.TranslateAnimation
9+ import android.view.animation.AccelerateDecelerateInterpolator
1010import android.widget.FrameLayout
1111import androidx.constraintlayout.widget.ConstraintLayout
12- import androidx.core.view.doOnLayout
13- import androidx.core.view.marginBottom
14- import androidx.core.view.marginTop
15- import androidx.core.view.updateLayoutParams
16- import androidx.interpolator.view.animation.LinearOutSlowInInterpolator
12+ import androidx.core.view.*
1713import cloud.mindbox.mobile_sdk.SnackbarPosition
1814import cloud.mindbox.mobile_sdk.inapp.domain.models.InAppType
1915import cloud.mindbox.mobile_sdk.isTop
2016import cloud.mindbox.mobile_sdk.px
21- import cloud.mindbox.mobile_sdk.setOnAnimationEnd
2217import kotlin.math.abs
2318
2419internal class InAppConstraintLayout : ConstraintLayout , BackButtonLayout {
@@ -131,40 +126,41 @@ internal class InAppConstraintLayout : ConstraintLayout, BackButtonLayout {
131126 }
132127 }
133128
134- fun slideUp (
135- isReverse : Boolean = false,
136- onAnimationEnd : Runnable = Runnable { }
137- ) {
138- animateY(
139- if (! isReverse) height.toFloat() else 0f ,
140- if (! isReverse) 0f else height.toFloat() + marginBottom,
141- onAnimationEnd
142- )
143- }
144-
145- fun slideDown (
146- isReverse : Boolean = false,
147- onAnimationEnd : Runnable = Runnable { }
148- ) {
149- animateY(
150- if (! isReverse) - height.toFloat() else 0f ,
151- if (! isReverse) 0f else - height.toFloat() - marginTop,
152- onAnimationEnd
153- )
129+ fun slideUp (isReverse : Boolean = false, onAnimationEnd : Runnable = Runnable { }) {
130+ val travelDistance = (height + marginBottom).toFloat()
131+ if (isReverse) {
132+ animate().translationY(travelDistance)
133+ .setDuration(ANIM_DURATION )
134+ .setInterpolator(AccelerateDecelerateInterpolator ())
135+ .withEndAction(onAnimationEnd)
136+ .start()
137+ } else {
138+ translationY = travelDistance
139+ isVisible = true
140+ animate().translationY(0f )
141+ .setDuration(ANIM_DURATION )
142+ .setInterpolator(AccelerateDecelerateInterpolator ())
143+ .withEndAction(onAnimationEnd)
144+ .start()
145+ }
154146 }
155147
156- private fun animateY (
157- from : Float ,
158- to : Float ,
159- onAnimationEnd : Runnable
160- ) {
161- TranslateAnimation (0f , 0f , from, to).apply {
162- duration = ANIM_DURATION
163- fillAfter = true
164- interpolator = LinearOutSlowInInterpolator ()
165- setOnAnimationEnd(onAnimationEnd)
166- }.also {
167- startAnimation(it)
148+ fun slideDown (isReverse : Boolean = false, onAnimationEnd : Runnable = Runnable { }) {
149+ val travelDistance = - (height + marginTop).toFloat()
150+ if (isReverse) {
151+ animate().translationY(travelDistance)
152+ .setDuration(ANIM_DURATION )
153+ .setInterpolator(AccelerateDecelerateInterpolator ())
154+ .withEndAction(onAnimationEnd)
155+ .start()
156+ } else {
157+ translationY = travelDistance
158+ isVisible = true
159+ animate().translationY(0f )
160+ .setDuration(ANIM_DURATION )
161+ .setInterpolator(AccelerateDecelerateInterpolator ())
162+ .withEndAction(onAnimationEnd)
163+ .start()
168164 }
169165 }
170166
0 commit comments