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; mTargetShown = imeShouldShow;
if (mLastAdjustTop < 0) { if (mLastAdjustTop < 0) {
mLastAdjustTop = imeShouldShow ? hiddenTop : shownTop; mLastAdjustTop = imeShouldShow ? hiddenTop : shownTop;
} else { } else if (mLastAdjustTop != (imeShouldShow ? mShownTop : mHiddenTop)) {
// 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.
if (mTargetAdjusted != targetAdjusted && targetAdjusted == mAdjusted) { if (mTargetAdjusted != targetAdjusted && targetAdjusted == mAdjusted) {
if (mLastAdjustTop != (imeShouldShow ? mShownTop : mHiddenTop)) { // 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; 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) { if (mPaused) {

View File

@@ -21,6 +21,7 @@ import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator; import android.animation.ValueAnimator;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.graphics.Point; import android.graphics.Point;
import android.graphics.Rect;
import android.os.Handler; import android.os.Handler;
import android.os.RemoteException; import android.os.RemoteException;
import android.util.Slog; import android.util.Slog;
@@ -188,7 +189,16 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged
if (mInsetsState.equals(insetsState)) { if (mInsetsState.equals(insetsState)) {
return; 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 */); 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 @Override