Merge "Start IME animation if its insets update after show" into rvc-dev
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user