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

View File

@@ -329,7 +329,7 @@ public class ExpandedAnimationController
}
/** 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) {
return;
}
@@ -337,6 +337,7 @@ public class ExpandedAnimationController
.withStiffness(SpringForce.STIFFNESS_HIGH)
.scaleX(1.1f)
.scaleY(1.1f)
.translationY(bubble.getTranslationY() + translationYBy)
.alpha(0f, after)
.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) {
// Pop and fade the bubbles sequentially.
animationForChildAtIndex(0)
.scaleX(0.5f)
.scaleY(0.5f)
.alpha(0f)
.withDampingRatio(SpringForce.DAMPING_RATIO_NO_BOUNCY)
.withStiffness(SpringForce.STIFFNESS_HIGH)
.start(after);
public void animateStackDismissal(float translationYBy, Runnable after) {
animationsForChildrenFromIndex(0, (index, animation) ->
animation
.scaleX(0.5f)
.scaleY(0.5f)
.alpha(0f)
.translationY(
mLayout.getChildAt(index).getTranslationY() + translationYBy)
.withStiffness(SpringForce.STIFFNESS_HIGH))
.startAll(after);
}
/**
@@ -710,8 +711,6 @@ public class StackAnimationController extends
if (property.equals(DynamicAnimation.TRANSLATION_X)
|| property.equals(DynamicAnimation.TRANSLATION_Y)) {
return index + 1;
} else if (isStackStuckToTarget()) {
return index + 1; // Chain all animations in dismiss (scale, alpha, etc. are used).
} else {
return NONE;
}