Merge "Fix issues with Bubbles+IME." into rvc-dev am: e42dc4907b
Change-Id: I4e846ccc02b32ccb4784cb4de2ae0e660b0ce7d6
This commit is contained in:
@@ -1311,7 +1311,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
|
||||
private class BubblesImeListener extends PinnedStackListenerForwarder.PinnedStackListener {
|
||||
@Override
|
||||
public void onImeVisibilityChanged(boolean imeVisible, int imeHeight) {
|
||||
if (mStackView != null && mStackView.getBubbleCount() > 0) {
|
||||
if (mStackView != null) {
|
||||
mStackView.post(() -> mStackView.onImeVisibilityChanged(imeVisible, imeHeight));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,6 +126,11 @@ public class BubbleStackView extends FrameLayout {
|
||||
@VisibleForTesting
|
||||
static final int FLYOUT_HIDE_AFTER = 5000;
|
||||
|
||||
private static final PhysicsAnimator.SpringConfig FLYOUT_IME_ANIMATION_SPRING_CONFIG =
|
||||
new PhysicsAnimator.SpringConfig(
|
||||
StackAnimationController.IME_ANIMATION_STIFFNESS,
|
||||
StackAnimationController.DEFAULT_BOUNCINESS);
|
||||
|
||||
/**
|
||||
* Interface to synchronize {@link View} state and the screen.
|
||||
*
|
||||
@@ -1354,8 +1359,23 @@ public class BubbleStackView extends FrameLayout {
|
||||
public void onImeVisibilityChanged(boolean visible, int height) {
|
||||
mStackAnimationController.setImeHeight(visible ? height + mImeOffset : 0);
|
||||
|
||||
if (!mIsExpanded) {
|
||||
mStackAnimationController.animateForImeVisibility(visible);
|
||||
if (!mIsExpanded && getBubbleCount() > 0) {
|
||||
final float stackDestinationY =
|
||||
mStackAnimationController.animateForImeVisibility(visible);
|
||||
|
||||
// How far the stack is animating due to IME, we'll just animate the flyout by that
|
||||
// much too.
|
||||
final float stackDy =
|
||||
stackDestinationY - mStackAnimationController.getStackPosition().y;
|
||||
|
||||
// If the flyout is visible, translate it along with the bubble stack.
|
||||
if (mFlyout.getVisibility() == VISIBLE) {
|
||||
PhysicsAnimator.getInstance(mFlyout)
|
||||
.spring(DynamicAnimation.TRANSLATION_Y,
|
||||
mFlyout.getTranslationY() + stackDy,
|
||||
FLYOUT_IME_ANIMATION_SPRING_CONFIG)
|
||||
.start();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -68,9 +68,10 @@ public class StackAnimationController extends
|
||||
/**
|
||||
* Values to use for the default {@link SpringForce} provided to the physics animation layout.
|
||||
*/
|
||||
private static final int DEFAULT_STIFFNESS = 12000;
|
||||
public static final int DEFAULT_STIFFNESS = 12000;
|
||||
public static final float IME_ANIMATION_STIFFNESS = SpringForce.STIFFNESS_LOW;
|
||||
private static final int FLING_FOLLOW_STIFFNESS = 20000;
|
||||
private static final float DEFAULT_BOUNCINESS = 0.9f;
|
||||
public static final float DEFAULT_BOUNCINESS = 0.9f;
|
||||
|
||||
/**
|
||||
* Friction applied to fling animations. Since the stack must land on one of the sides of the
|
||||
@@ -503,8 +504,10 @@ public class StackAnimationController extends
|
||||
/**
|
||||
* Animates the stack either away from the newly visible IME, or back to its original position
|
||||
* due to the IME going away.
|
||||
*
|
||||
* @return The destination Y value of the stack due to the IME movement.
|
||||
*/
|
||||
public void animateForImeVisibility(boolean imeVisible) {
|
||||
public float animateForImeVisibility(boolean imeVisible) {
|
||||
final float maxBubbleY = getAllowableStackPositionRegion().bottom;
|
||||
float destinationY = Float.MIN_VALUE;
|
||||
|
||||
@@ -525,12 +528,14 @@ public class StackAnimationController extends
|
||||
springFirstBubbleWithStackFollowing(
|
||||
DynamicAnimation.TRANSLATION_Y,
|
||||
getSpringForce(DynamicAnimation.TRANSLATION_Y, /* view */ null)
|
||||
.setStiffness(SpringForce.STIFFNESS_LOW),
|
||||
.setStiffness(IME_ANIMATION_STIFFNESS),
|
||||
/* startVel */ 0f,
|
||||
destinationY);
|
||||
|
||||
notifyFloatingCoordinatorStackAnimatingTo(mStackPosition.x, destinationY);
|
||||
}
|
||||
|
||||
return destinationY;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -585,7 +590,7 @@ public class StackAnimationController extends
|
||||
- mBubblePaddingTop
|
||||
- (mImeHeight > Float.MIN_VALUE ? mImeHeight + mBubblePaddingTop : 0f)
|
||||
- Math.max(
|
||||
insets.getSystemWindowInsetBottom(),
|
||||
insets.getStableInsetBottom(),
|
||||
insets.getDisplayCutout() != null
|
||||
? insets.getDisplayCutout().getSafeInsetBottom()
|
||||
: 0);
|
||||
|
||||
Reference in New Issue
Block a user