Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Snippets Groups Projects
Commit 48f372c5 authored by Josh Tsuji's avatar Josh Tsuji Committed by android-build-merger
Browse files

Merge "Update the stack bounds for IME changes even if we're expanded." into qt-dev

am: d86369ae

Change-Id: I3dac5279e7dd1981e7c479b3cdbd7fab0028e564
parents fbf77eff d86369ae
Branches
No related tags found
No related merge requests found
......@@ -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);
}
}
......
......@@ -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;
final float maxBubbleY = getAllowableStackPositionRegion().bottom;
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);
}
}
/**
* Clear the IME height from the bounds and animate the stack back to its original position,
* assuming it wasn't moved in the meantime.
* Animates the stack either away from the newly visible IME, or back to its original position
* due to the IME going away.
*/
public void updateBoundsForInvisibleImeAndAnimate() {
mImeHeight = 0;
public void animateForImeVisibility(boolean imeVisible) {
final float maxBubbleY = getAllowableStackPositionRegion().bottom;
float destinationY = Float.MIN_VALUE;
if (mPreImeY > Float.MIN_VALUE) {
if (imeVisible) {
if (mStackPosition.y > maxBubbleY && mPreImeY == Float.MIN_VALUE) {
mPreImeY = mStackPosition.y;
destinationY = maxBubbleY;
}
} else {
if (mPreImeY > Float.MIN_VALUE) {
destinationY = mPreImeY;
mPreImeY = Float.MIN_VALUE;
}
}
if (destinationY > Float.MIN_VALUE) {
springFirstBubbleWithStackFollowing(
DynamicAnimation.TRANSLATION_Y,
getSpringForce(DynamicAnimation.TRANSLATION_Y, /* view */ null)
.setStiffness(SpringForce.STIFFNESS_LOW),
.setStiffness(SpringForce.STIFFNESS_LOW),
/* startVel */ 0f,
mPreImeY);
mPreImeY = Float.MIN_VALUE;
destinationY);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment