diff options
Diffstat (limited to 'app/src/main/java/com/wireguard/android/widget/fab/FloatingActionButtonBehavior.java')
-rw-r--r-- | app/src/main/java/com/wireguard/android/widget/fab/FloatingActionButtonBehavior.java | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/app/src/main/java/com/wireguard/android/widget/fab/FloatingActionButtonBehavior.java b/app/src/main/java/com/wireguard/android/widget/fab/FloatingActionButtonBehavior.java index 54679046..3741c29e 100644 --- a/app/src/main/java/com/wireguard/android/widget/fab/FloatingActionButtonBehavior.java +++ b/app/src/main/java/com/wireguard/android/widget/fab/FloatingActionButtonBehavior.java @@ -18,19 +18,13 @@ import android.view.View; public class FloatingActionButtonBehavior extends CoordinatorLayout.Behavior<FloatingActionsMenu> { + private static final long ANIMATION_DURATION = 250; + private static final TimeInterpolator FAST_OUT_SLOW_IN_INTERPOLATOR = new FastOutSlowInInterpolator(); + public FloatingActionButtonBehavior(final Context context, final AttributeSet attrs) { super(context, attrs); } - @Override - public boolean layoutDependsOn(final CoordinatorLayout parent, final FloatingActionsMenu child, - final View dependency) { - return dependency instanceof Snackbar.SnackbarLayout; - } - - private static final long ANIMATION_DURATION = 250; - private static final TimeInterpolator FAST_OUT_SLOW_IN_INTERPOLATOR = new FastOutSlowInInterpolator(); - private static void animateChange(final FloatingActionsMenu child, final float destination, final float fullSpan) { final float origin = child.getBehaviorYTranslation(); if (Math.abs(destination - origin) < fullSpan / 2) { @@ -40,18 +34,24 @@ public class FloatingActionButtonBehavior extends CoordinatorLayout.Behavior<Flo final ValueAnimator animator = new ValueAnimator(); animator.setFloatValues(origin, destination); animator.setInterpolator(FAST_OUT_SLOW_IN_INTERPOLATOR); - animator.setDuration((long)(ANIMATION_DURATION * (Math.abs(destination - origin) / fullSpan))); + animator.setDuration((long) (ANIMATION_DURATION * (Math.abs(destination - origin) / fullSpan))); animator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(final Animator a) { child.setBehaviorYTranslation(destination); } }); - animator.addUpdateListener(a -> child.setBehaviorYTranslation((float)a.getAnimatedValue())); + animator.addUpdateListener(a -> child.setBehaviorYTranslation((float) a.getAnimatedValue())); animator.start(); } @Override + public boolean layoutDependsOn(final CoordinatorLayout parent, final FloatingActionsMenu child, + final View dependency) { + return dependency instanceof Snackbar.SnackbarLayout; + } + + @Override public boolean onDependentViewChanged(final CoordinatorLayout parent, final FloatingActionsMenu child, final View dependency) { animateChange(child, Math.min(0, dependency.getTranslationY() - dependency.getMeasuredHeight()), dependency.getMeasuredHeight()); |