Loading packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java +3 −5 Original line number Diff line number Diff line Loading @@ -717,12 +717,10 @@ public class BubbleStackView extends FrameLayout { /** Moves the bubbles out of the way if they're going to be over the keyboard. */ public void onImeVisibilityChanged(boolean visible, int height) { mStackAnimationController.setImeHeight(height + mImeOffset); if (!mIsExpanded) { if (visible) { mStackAnimationController.updateBoundsForVisibleImeAndAnimate(height + mImeOffset); } else { mStackAnimationController.updateBoundsForInvisibleImeAndAnimate(); } mStackAnimationController.animateForImeVisibility(visible); } } Loading packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java +22 −25 Original line number Diff line number Diff line Loading @@ -334,41 +334,38 @@ public class StackAnimationController extends mLayout.removeEndActionForProperty(DynamicAnimation.TRANSLATION_Y); } /** * Save the IME height so that the allowable stack bounds reflect the now-visible IME, and * animate the stack out of the way if necessary. */ public void updateBoundsForVisibleImeAndAnimate(int imeHeight) { /** Save the current IME height so that we know where the stack bounds should be. */ public void setImeHeight(int imeHeight) { mImeHeight = imeHeight; } /** * Animates the stack either away from the newly visible IME, or back to its original position * due to the IME going away. */ public void animateForImeVisibility(boolean imeVisible) { final float maxBubbleY = getAllowableStackPositionRegion().bottom; float destinationY = Float.MIN_VALUE; if (imeVisible) { if (mStackPosition.y > maxBubbleY && mPreImeY == Float.MIN_VALUE) { mPreImeY = mStackPosition.y; springFirstBubbleWithStackFollowing( DynamicAnimation.TRANSLATION_Y, getSpringForce(DynamicAnimation.TRANSLATION_Y, /* view */ null) .setStiffness(SpringForce.STIFFNESS_LOW), /* startVel */ 0f, maxBubbleY); destinationY = maxBubbleY; } } else { if (mPreImeY > Float.MIN_VALUE) { destinationY = mPreImeY; mPreImeY = Float.MIN_VALUE; } } /** * Clear the IME height from the bounds and animate the stack back to its original position, * assuming it wasn't moved in the meantime. */ public void updateBoundsForInvisibleImeAndAnimate() { mImeHeight = 0; if (mPreImeY > Float.MIN_VALUE) { if (destinationY > Float.MIN_VALUE) { springFirstBubbleWithStackFollowing( DynamicAnimation.TRANSLATION_Y, getSpringForce(DynamicAnimation.TRANSLATION_Y, /* view */ null) .setStiffness(SpringForce.STIFFNESS_LOW), /* startVel */ 0f, mPreImeY); mPreImeY = Float.MIN_VALUE; destinationY); } } Loading Loading
packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java +3 −5 Original line number Diff line number Diff line Loading @@ -717,12 +717,10 @@ public class BubbleStackView extends FrameLayout { /** Moves the bubbles out of the way if they're going to be over the keyboard. */ public void onImeVisibilityChanged(boolean visible, int height) { mStackAnimationController.setImeHeight(height + mImeOffset); if (!mIsExpanded) { if (visible) { mStackAnimationController.updateBoundsForVisibleImeAndAnimate(height + mImeOffset); } else { mStackAnimationController.updateBoundsForInvisibleImeAndAnimate(); } mStackAnimationController.animateForImeVisibility(visible); } } Loading
packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java +22 −25 Original line number Diff line number Diff line Loading @@ -334,41 +334,38 @@ public class StackAnimationController extends mLayout.removeEndActionForProperty(DynamicAnimation.TRANSLATION_Y); } /** * Save the IME height so that the allowable stack bounds reflect the now-visible IME, and * animate the stack out of the way if necessary. */ public void updateBoundsForVisibleImeAndAnimate(int imeHeight) { /** Save the current IME height so that we know where the stack bounds should be. */ public void setImeHeight(int imeHeight) { mImeHeight = imeHeight; } /** * Animates the stack either away from the newly visible IME, or back to its original position * due to the IME going away. */ public void animateForImeVisibility(boolean imeVisible) { final float maxBubbleY = getAllowableStackPositionRegion().bottom; float destinationY = Float.MIN_VALUE; if (imeVisible) { if (mStackPosition.y > maxBubbleY && mPreImeY == Float.MIN_VALUE) { mPreImeY = mStackPosition.y; springFirstBubbleWithStackFollowing( DynamicAnimation.TRANSLATION_Y, getSpringForce(DynamicAnimation.TRANSLATION_Y, /* view */ null) .setStiffness(SpringForce.STIFFNESS_LOW), /* startVel */ 0f, maxBubbleY); destinationY = maxBubbleY; } } else { if (mPreImeY > Float.MIN_VALUE) { destinationY = mPreImeY; mPreImeY = Float.MIN_VALUE; } } /** * Clear the IME height from the bounds and animate the stack back to its original position, * assuming it wasn't moved in the meantime. */ public void updateBoundsForInvisibleImeAndAnimate() { mImeHeight = 0; if (mPreImeY > Float.MIN_VALUE) { if (destinationY > Float.MIN_VALUE) { springFirstBubbleWithStackFollowing( DynamicAnimation.TRANSLATION_Y, getSpringForce(DynamicAnimation.TRANSLATION_Y, /* view */ null) .setStiffness(SpringForce.STIFFNESS_LOW), /* startVel */ 0f, mPreImeY); mPreImeY = Float.MIN_VALUE; destinationY); } } Loading