Commit f05761ac authored by Max Lv's avatar Max Lv

Refine the animation of snackbar

parent a33efea2
...@@ -20,8 +20,8 @@ android { ...@@ -20,8 +20,8 @@ android {
applicationId "com.github.shadowsocks" applicationId "com.github.shadowsocks"
minSdkVersion rootProject.minSdkVersion minSdkVersion rootProject.minSdkVersion
targetSdkVersion rootProject.sdkVersion targetSdkVersion rootProject.sdkVersion
versionCode 203 versionCode 204
versionName "4.4.3" versionName "4.4.4"
testApplicationId "com.github.shadowsocks.test" testApplicationId "com.github.shadowsocks.test"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary true vectorDrawables.useSupportLibrary true
......
...@@ -45,7 +45,9 @@ class MoveUpwardBehavior : CoordinatorLayout.Behavior<View> { ...@@ -45,7 +45,9 @@ class MoveUpwardBehavior : CoordinatorLayout.Behavior<View> {
dependency is Snackbar.SnackbarLayout dependency is Snackbar.SnackbarLayout
override fun onDependentViewChanged(parent: CoordinatorLayout, child: View, dependency: View): Boolean { override fun onDependentViewChanged(parent: CoordinatorLayout, child: View, dependency: View): Boolean {
child.translationY = Math.min(0f, dependency.translationY - dependency.height) val params = child.layoutParams
params.height = parent.height - dependency.height
child.layoutParams = params
return true return true
} }
...@@ -55,22 +57,23 @@ class MoveUpwardBehavior : CoordinatorLayout.Behavior<View> { ...@@ -55,22 +57,23 @@ class MoveUpwardBehavior : CoordinatorLayout.Behavior<View> {
override fun onDependentViewRemoved(parent: CoordinatorLayout, child: View, dependency: View) { override fun onDependentViewRemoved(parent: CoordinatorLayout, child: View, dependency: View) {
if (!isAccessibilityEnabled(parent.getContext())) { if (!isAccessibilityEnabled(parent.getContext())) {
val animator = ValueAnimator() val animator = ValueAnimator()
val start = child.translationY val start = child.height
animator.setFloatValues(start, 0f) animator.setIntValues(start, parent.height)
animator.interpolator = SnackbarAnimation.FAST_OUT_SLOW_IN_INTERPOLATOR animator.interpolator = SnackbarAnimation.FAST_OUT_SLOW_IN_INTERPOLATOR
animator.duration = SnackbarAnimation.ANIMATION_DURATION animator.duration = SnackbarAnimation.ANIMATION_DURATION
animator.addUpdateListener(object : ValueAnimator.AnimatorUpdateListener { animator.addUpdateListener(object : ValueAnimator.AnimatorUpdateListener {
private var previousValue = start
override fun onAnimationUpdate(animator: ValueAnimator) { override fun onAnimationUpdate(animator: ValueAnimator) {
val currentValue = animator.animatedValue as Float val currentValue = animator.animatedValue as Int
child.translationY = currentValue val params = child.layoutParams
previousValue = currentValue params.height = currentValue
child.layoutParams = params
} }
}) })
animator.start() animator.start()
} else { } else {
child.translationY = 0f val params = child.layoutParams
params.height = parent.height
child.layoutParams = params
} }
} }
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment