Merge "Start IME animation if its insets update after show" into rvc-dev

This commit is contained in:
Tony Huang
2020-05-05 08:23:16 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 7 deletions

View File

@@ -211,14 +211,16 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks,
mTargetShown = imeShouldShow;
if (mLastAdjustTop < 0) {
mLastAdjustTop = imeShouldShow ? hiddenTop : shownTop;
} else {
// Check for an "interruption" of an existing animation. In this case, we need to
// fake-flip the last-known state direction so that the animation completes in the
// other direction.
} else if (mLastAdjustTop != (imeShouldShow ? mShownTop : mHiddenTop)) {
if (mTargetAdjusted != targetAdjusted && targetAdjusted == mAdjusted) {
if (mLastAdjustTop != (imeShouldShow ? mShownTop : mHiddenTop)) {
mAdjusted = mTargetAdjusted;
}
// Check for an "interruption" of an existing animation. In this case, we
// need to fake-flip the last-known state direction so that the animation
// completes in the other direction.
mAdjusted = mTargetAdjusted;
} else if (targetAdjusted && mTargetAdjusted && mAdjusted) {
// Already fully adjusted for IME, but IME height has changed; so, force-start
// an async animation to the new IME height.
mAdjusted = false;
}
}
if (mPaused) {

View File

@@ -21,6 +21,7 @@ import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.content.res.Configuration;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.Handler;
import android.os.RemoteException;
import android.util.Slog;
@@ -188,7 +189,16 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged
if (mInsetsState.equals(insetsState)) {
return;
}
final InsetsSource newSource = insetsState.getSource(InsetsState.ITYPE_IME);
final Rect newFrame = newSource.getFrame();
final Rect oldFrame = mInsetsState.getSource(InsetsState.ITYPE_IME).getFrame();
mInsetsState.set(insetsState, true /* copySources */);
if (mImeShowing && !newFrame.equals(oldFrame) && newSource.isVisible()) {
if (DEBUG) Slog.d(TAG, "insetsChanged when IME showing, restart animation");
startAnimation(mImeShowing, true /* forceRestart */);
}
}
@Override