diff options
5 files changed, 38 insertions, 18 deletions
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 5001006d1aa6..d7f67cef033e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java @@ -93,7 +93,6 @@ public class KeyguardBouncer { private int mBouncerPromptReason; private boolean mIsAnimatingAway; private boolean mIsScrimmed; - private ViewGroup mLockIconContainer; public KeyguardBouncer(Context context, ViewMediatorCallback callback, LockPatternUtils lockPatternUtils, ViewGroup container, @@ -190,10 +189,6 @@ public class KeyguardBouncer { return mIsScrimmed; } - public ViewGroup getLockIconContainer() { - return mRoot == null || mRoot.getVisibility() != View.VISIBLE ? null : mLockIconContainer; - } - /** * This method must be called at the end of the bouncer animation when * the translation is performed manually by the user, otherwise FalsingManager @@ -374,11 +369,6 @@ public class KeyguardBouncer { private void showPrimarySecurityScreen() { mKeyguardView.showPrimarySecurityScreen(); - KeyguardSecurityView keyguardSecurityView = mKeyguardView.getCurrentSecurityView(); - if (keyguardSecurityView != null) { - mLockIconContainer = ((ViewGroup) keyguardSecurityView) - .findViewById(R.id.lock_icon_container); - } } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java index 62d855dfd14c..67810738b17e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java @@ -105,6 +105,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange private boolean mShowingLaunchAffordance; private boolean mKeyguardJustShown; private boolean mUpdatePending; + private boolean mBouncerPreHideAnimation; private final KeyguardMonitor.Callback mKeyguardMonitorCallback = new KeyguardMonitor.Callback() { @@ -125,9 +126,12 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange @Override public void onKeyguardFadingAwayChanged() { - if (!mKeyguardMonitor.isKeyguardFadingAway() && mBlockUpdates) { - mBlockUpdates = false; - update(true /* force */); + if (!mKeyguardMonitor.isKeyguardFadingAway()) { + mBouncerPreHideAnimation = false; + if (mBlockUpdates) { + mBlockUpdates = false; + update(true /* force */); + } } } }; @@ -464,6 +468,14 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange } } + /** + * Animate padlock opening when bouncer challenge is solved. + */ + public void onBouncerPreHideAnimation() { + mBouncerPreHideAnimation = true; + update(); + } + @Retention(RetentionPolicy.SOURCE) @IntDef({ERROR, UNLOCK, LOCK, SCANNING}) @interface LockAnimIndex {} @@ -511,7 +523,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange private int getState() { KeyguardUpdateMonitor updateMonitor = Dependency.get(KeyguardUpdateMonitor.class); - if ((mUnlockMethodCache.canSkipBouncer() || !mKeyguardShowing + if ((mUnlockMethodCache.canSkipBouncer() || !mKeyguardShowing || mBouncerPreHideAnimation || mKeyguardMonitor.isKeyguardGoingAway()) && !mSimLocked) { return STATE_LOCK_OPEN; } else if (mTransientBiometricsError) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 6b12c6158948..7bc849d28c53 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -4539,6 +4539,14 @@ public class StatusBar extends SystemUI implements DemoMode, } /** + * When {@link KeyguardBouncer} starts to be dismissed, playing its animation. + */ + public void onBouncerPreHideAnimation() { + mNotificationPanel.onBouncerPreHideAnimation(); + mStatusBarWindow.onBouncerPreHideAnimation(); + } + + /** * @return a PackageManger for userId or if userId is < 0 (USER_ALL etc) then * return PackageManager for mContext */ diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index 50c356139fd3..bb8ba055276a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -279,14 +279,15 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb 0 /* delay */); } else { final long duration; + final int delay; if (needsBypassFading()) { duration = KeyguardBypassController.BYPASS_PANEL_FADE_DURATION; + delay = 0; } else { duration = AppearAnimationUtils.DEFAULT_APPEAR_DURATION / 2; + delay = 120; } - CrossFadeHelper.fadeOut(mLockIconContainer, - duration /* duration */, - 0 /* delay */, null /* runnable */); + CrossFadeHelper.fadeOut(mLockIconContainer, duration, delay, null /* runnable */); } } } @@ -516,7 +517,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb public void startPreHideAnimation(Runnable finishRunnable) { if (mBouncer.isShowing()) { mBouncer.startPreHideAnimation(finishRunnable); - mNotificationPanelView.onBouncerPreHideAnimation(); + mStatusBar.onBouncerPreHideAnimation(); } else if (finishRunnable != null) { finishRunnable.run(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java index 7a81ed419fff..a9e818df6bc3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java @@ -527,6 +527,15 @@ public class StatusBarWindowView extends FrameLayout { } } + /** + * When {@link KeyguardBouncer} starts to be dismissed and starts to play its animation. + */ + public void onBouncerPreHideAnimation() { + if (mLockIcon != null) { + mLockIcon.onBouncerPreHideAnimation(); + } + } + public class LayoutParams extends FrameLayout.LayoutParams { public boolean ignoreRightInset; |