diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java index 165ed78996b2d..99debee2dad3f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java @@ -70,6 +70,7 @@ public class KeyguardBouncer { } }; private final Runnable mRemoveViewRunnable = this::removeView; + private int mStatusBarHeight; public KeyguardBouncer(Context context, ViewMediatorCallback callback, LockPatternUtils lockPatternUtils, ViewGroup container, @@ -129,7 +130,9 @@ public class KeyguardBouncer { mRoot.setVisibility(View.VISIBLE); mKeyguardView.onResume(); showPromptReason(mBouncerPromptReason); - if (mKeyguardView.getHeight() != 0) { + // We might still be collapsed and the view didn't have time to layout yet or still + // be small, let's wait on the predraw to do the animation in that case. + if (mKeyguardView.getHeight() != 0 && mKeyguardView.getHeight() != mStatusBarHeight) { mKeyguardView.startAppearAnimation(); } else { mKeyguardView.getViewTreeObserver().addOnPreDrawListener( @@ -252,6 +255,8 @@ public class KeyguardBouncer { mKeyguardView.setLockPatternUtils(mLockPatternUtils); mKeyguardView.setViewMediatorCallback(mCallback); mContainer.addView(mRoot, mContainer.getChildCount()); + mStatusBarHeight = mRoot.getResources().getDimensionPixelOffset( + com.android.systemui.R.dimen.status_bar_height); mRoot.setVisibility(View.INVISIBLE); final WindowInsets rootInsets = mRoot.getRootWindowInsets();