diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java index 3c93bb7a59b24..bc70d634b4ecf 100644 --- a/core/java/android/view/InsetsController.java +++ b/core/java/android/view/InsetsController.java @@ -467,6 +467,10 @@ public class InsetsController implements WindowInsetsController { } } + boolean isAnimating() { + return mAnimationDirection != DIRECTION_NONE; + } + private InsetsSourceConsumer createConsumerOfType(int type) { if (type == ITYPE_IME) { return new ImeInsetsSourceConsumer(mState, Transaction::new, this); @@ -514,6 +518,7 @@ public class InsetsController implements WindowInsetsController { } else { hideDirectly(types); } + mAnimationDirection = show ? DIRECTION_SHOW : DIRECTION_HIDE; mAnimator = ObjectAnimator.ofObject( controller, new InsetsProperty(), diff --git a/core/java/android/view/InsetsSourceConsumer.java b/core/java/android/view/InsetsSourceConsumer.java index b1caf1872de2d..c6d9898a425cd 100644 --- a/core/java/android/view/InsetsSourceConsumer.java +++ b/core/java/android/view/InsetsSourceConsumer.java @@ -167,7 +167,8 @@ public class InsetsSourceConsumer { } private void applyHiddenToControl() { - if (mSourceControl == null || mSourceControl.getLeash() == null) { + if (mSourceControl == null || mSourceControl.getLeash() == null + || mController.isAnimating()) { return; }