diff options
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java index 9ebb7f5aa270..be9bc9b23f56 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java @@ -419,8 +419,12 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged // already (e.g., when focussing an editText in activity B, while and editText in // activity A is focussed), we will not get a call of #insetsControlChanged, and // therefore have to start the show animation from here - startAnimation(mImeRequestedVisible /* show */, false /* forceRestart */, - statsToken); + if (visible || mImeShowing) { + // only start the animation if we're either already showing or becoming visible. + // otherwise starting another hide animation causes flickers. + startAnimation(mImeRequestedVisible /* show */, false /* forceRestart */, + statsToken); + } // In case of a hide, the statsToken should not been send yet (as the animation // is still ongoing). It will be sent at the end of the animation |