Merge "Polish dismiss animations." into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-04-16 06:45:59 +00:00
committed by Android (Google) Code Review
3 changed files with 18 additions and 16 deletions

View File

@@ -374,8 +374,9 @@ public class BubbleStackView extends FrameLayout {
@Override @Override
public void onReleasedInTarget(@NonNull MagnetizedObject.MagneticTarget target) { public void onReleasedInTarget(@NonNull MagnetizedObject.MagneticTarget target) {
mExpandedAnimationController.dismissDraggedOutBubble( mExpandedAnimationController.dismissDraggedOutBubble(
mExpandedAnimationController.getDraggedOutBubble(), mExpandedAnimationController.getDraggedOutBubble() /* bubble */,
BubbleStackView.this::dismissMagnetizedObject); mDismissTargetContainer.getHeight() /* translationYBy */,
BubbleStackView.this::dismissMagnetizedObject /* after */);
hideDismissTarget(); hideDismissTarget();
} }
}; };
@@ -405,7 +406,8 @@ public class BubbleStackView extends FrameLayout {
@Override @Override
public void onReleasedInTarget(@NonNull MagnetizedObject.MagneticTarget target) { public void onReleasedInTarget(@NonNull MagnetizedObject.MagneticTarget target) {
mStackAnimationController.implodeStack( mStackAnimationController.animateStackDismissal(
mDismissTargetContainer.getHeight() /* translationYBy */,
() -> { () -> {
resetDesaturationAndDarken(); resetDesaturationAndDarken();
dismissMagnetizedObject(); dismissMagnetizedObject();

View File

@@ -329,7 +329,7 @@ public class ExpandedAnimationController
} }
/** Plays a dismiss animation on the dragged out bubble. */ /** Plays a dismiss animation on the dragged out bubble. */
public void dismissDraggedOutBubble(View bubble, Runnable after) { public void dismissDraggedOutBubble(View bubble, float translationYBy, Runnable after) {
if (bubble == null) { if (bubble == null) {
return; return;
} }
@@ -337,6 +337,7 @@ public class ExpandedAnimationController
.withStiffness(SpringForce.STIFFNESS_HIGH) .withStiffness(SpringForce.STIFFNESS_HIGH)
.scaleX(1.1f) .scaleX(1.1f)
.scaleY(1.1f) .scaleY(1.1f)
.translationY(bubble.getTranslationY() + translationYBy)
.alpha(0f, after) .alpha(0f, after)
.start(); .start();

View File

@@ -647,17 +647,18 @@ public class StackAnimationController extends
} }
/** /**
* 'Implode' the stack by shrinking the bubbles via chained animations and fading them out. * 'Implode' the stack by shrinking the bubbles, fading them out, and translating them down.
*/ */
public void implodeStack(Runnable after) { public void animateStackDismissal(float translationYBy, Runnable after) {
// Pop and fade the bubbles sequentially. animationsForChildrenFromIndex(0, (index, animation) ->
animationForChildAtIndex(0) animation
.scaleX(0.5f) .scaleX(0.5f)
.scaleY(0.5f) .scaleY(0.5f)
.alpha(0f) .alpha(0f)
.withDampingRatio(SpringForce.DAMPING_RATIO_NO_BOUNCY) .translationY(
.withStiffness(SpringForce.STIFFNESS_HIGH) mLayout.getChildAt(index).getTranslationY() + translationYBy)
.start(after); .withStiffness(SpringForce.STIFFNESS_HIGH))
.startAll(after);
} }
/** /**
@@ -710,8 +711,6 @@ public class StackAnimationController extends
if (property.equals(DynamicAnimation.TRANSLATION_X) if (property.equals(DynamicAnimation.TRANSLATION_X)
|| property.equals(DynamicAnimation.TRANSLATION_Y)) { || property.equals(DynamicAnimation.TRANSLATION_Y)) {
return index + 1; return index + 1;
} else if (isStackStuckToTarget()) {
return index + 1; // Chain all animations in dismiss (scale, alpha, etc. are used).
} else { } else {
return NONE; return NONE;
} }