diff options
author | Peter Kalauskas <peskal@google.com> | 2020-12-23 14:10:13 -0800 |
---|---|---|
committer | Peter Kalauskas <peskal@google.com> | 2021-02-10 15:37:05 -0800 |
commit | 1970915c2c88c05ca8d5f669a72ff22c2f4beef2 (patch) | |
tree | f03cef845616494245ab23f676328f98780451a6 /packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java | |
parent | 0c27903d9d1c245dce5cacbfbafd997f89d85297 (diff) |
New keyguard user switcher
- Use ViewController for KeyguardUserSwitcher, name this
KeyguardUserSwitcherController
- Create KeyguardUserSwitcherListView. Separate view container and
controller code.
- Daggerize KeyguardUserSwitcherController
- Move KeyguardUserSwitcher from NotificationsQuickSettingsContainer to
NotificationPanelView
- Hide clock and notification when keyguard user switcher is open
- Show "End guest session" button when switcher is open and user is
guest
- Introduce listener for user switcher state
- Change icon of guest when current so that it does not show exit icon
- Disallow guest exit via user switcher list item
- Propagate dark amount to keyguard user switcher
- Updated styles
Known issues:
- If repeatedly pressing KEYCODE_POWER while switching between users,
the clock will sometimes get stuck in INVISIBLE state: b/179930842
- Multiple StrictMode violations are still present: b/179913579
Test: atest com.android.keyguard
Test: Build with config_keyguardUserSwitcher=false, enable multi-user,
check that user icon is in the status bar but not on the keyguard
above the clock
Test: Build with config_keyguardUserSwitcher=true, check that user icon
is visible on keyguard above the clock
Test: When config_keyguardUserSwitcher=true, tap user icon to open
keyguard user switcher, then open and close QS to verify that
the keyguard user switcher closes
Test: Check that user switcher is always open and visible on the lock
screen when simple user switcher is enabled:
adb shell settings put global lockscreenSimpleUserSwitcher 1 &&
adb shell stop &&
adb shell start
Bug: 169783558
Change-Id: Iaea4eae358873ae80748ca3eb9329f22bb2bb2ef
Diffstat (limited to 'packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java')
-rw-r--r-- | packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java | 94 |
1 files changed, 7 insertions, 87 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java index a5f364d30d7d..6fb6760be653 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java @@ -16,13 +16,9 @@ package com.android.keyguard; -import static com.android.systemui.statusbar.StatusBarState.KEYGUARD; - import android.util.Slog; import android.view.View; -import com.android.systemui.Interpolators; -import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.notification.AnimatableProperty; import com.android.systemui.statusbar.notification.PropertyAnimator; import com.android.systemui.statusbar.notification.stack.AnimationProperties; @@ -50,13 +46,12 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV private final KeyguardSliceViewController mKeyguardSliceViewController; private final KeyguardClockSwitchController mKeyguardClockSwitchController; - private final KeyguardStateController mKeyguardStateController; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private final ConfigurationController mConfigurationController; private final NotificationIconAreaController mNotificationIconAreaController; private final DozeParameters mDozeParameters; + private final KeyguardVisibilityHelper mKeyguardVisibilityHelper; - private boolean mKeyguardStatusViewVisibilityAnimating; private int mLockScreenMode = KeyguardUpdateMonitor.LOCK_SCREEN_MODE_NORMAL; @Inject @@ -72,11 +67,12 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV super(keyguardStatusView); mKeyguardSliceViewController = keyguardSliceViewController; mKeyguardClockSwitchController = keyguardClockSwitchController; - mKeyguardStateController = keyguardStateController; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mConfigurationController = configurationController; mNotificationIconAreaController = notificationIconAreaController; mDozeParameters = dozeParameters; + mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView, keyguardStateController, + dozeParameters); } @Override @@ -144,7 +140,7 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV * Set keyguard status view alpha. */ public void setAlpha(float alpha) { - if (!mKeyguardStatusViewVisibilityAnimating) { + if (!mKeyguardVisibilityHelper.isVisibilityAnimating()) { mView.setAlpha(alpha); } } @@ -200,7 +196,7 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV public void updatePosition(int x, int y, float scale, boolean animate) { // We animate the status view visible/invisible using Y translation, so don't change it // while the animation is running. - if (!mKeyguardStatusViewVisibilityAnimating) { + if (!mKeyguardVisibilityHelper.isVisibilityAnimating()) { PropertyAnimator.setProperty(mView, AnimatableProperty.Y, y, CLOCK_ANIMATION_PROPERTIES, animate); } @@ -230,69 +226,8 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV boolean keyguardFadingAway, boolean goingToFullShade, int oldStatusBarState) { - mView.animate().cancel(); - mKeyguardStatusViewVisibilityAnimating = false; - if ((!keyguardFadingAway && oldStatusBarState == KEYGUARD - && statusBarState != KEYGUARD) || goingToFullShade) { - mKeyguardStatusViewVisibilityAnimating = true; - mView.animate() - .alpha(0f) - .setStartDelay(0) - .setDuration(160) - .setInterpolator(Interpolators.ALPHA_OUT) - .withEndAction( - mAnimateKeyguardStatusViewGoneEndRunnable); - if (keyguardFadingAway) { - mView.animate() - .setStartDelay(mKeyguardStateController.getKeyguardFadingAwayDelay()) - .setDuration(mKeyguardStateController.getShortenedFadingAwayDuration()) - .start(); - } - } else if (oldStatusBarState == StatusBarState.SHADE_LOCKED && statusBarState == KEYGUARD) { - mView.setVisibility(View.VISIBLE); - mKeyguardStatusViewVisibilityAnimating = true; - mView.setAlpha(0f); - mView.animate() - .alpha(1f) - .setStartDelay(0) - .setDuration(320) - .setInterpolator(Interpolators.ALPHA_IN) - .withEndAction(mAnimateKeyguardStatusViewVisibleEndRunnable); - } else if (statusBarState == KEYGUARD) { - if (keyguardFadingAway) { - mKeyguardStatusViewVisibilityAnimating = true; - mView.animate() - .alpha(0) - .translationYBy(-getHeight() * 0.05f) - .setInterpolator(Interpolators.FAST_OUT_LINEAR_IN) - .setDuration(125) - .setStartDelay(0) - .withEndAction(mAnimateKeyguardStatusViewInvisibleEndRunnable) - .start(); - } else if (mDozeParameters.shouldControlUnlockedScreenOff()) { - mKeyguardStatusViewVisibilityAnimating = true; - - mView.setVisibility(View.VISIBLE); - mView.setAlpha(0f); - - float curTranslationY = mView.getTranslationY(); - mView.setTranslationY(curTranslationY - getHeight() * 0.1f); - mView.animate() - .setStartDelay((int) (StackStateAnimator.ANIMATION_DURATION_WAKEUP * .6f)) - .setDuration(StackStateAnimator.ANIMATION_DURATION_WAKEUP) - .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) - .alpha(1f) - .translationY(curTranslationY) - .withEndAction(mAnimateKeyguardStatusViewVisibleEndRunnable) - .start(); - } else { - mView.setVisibility(View.VISIBLE); - mView.setAlpha(1f); - } - } else { - mView.setVisibility(View.GONE); - mView.setAlpha(1f); - } + mKeyguardVisibilityHelper.setViewVisibility( + statusBarState, keyguardFadingAway, goingToFullShade, oldStatusBarState); } private void refreshTime() { @@ -393,19 +328,4 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV mView.updateLogoutView(); } }; - - private final Runnable mAnimateKeyguardStatusViewInvisibleEndRunnable = () -> { - mKeyguardStatusViewVisibilityAnimating = false; - mView.setVisibility(View.INVISIBLE); - }; - - - private final Runnable mAnimateKeyguardStatusViewGoneEndRunnable = () -> { - mKeyguardStatusViewVisibilityAnimating = false; - mView.setVisibility(View.GONE); - }; - - private final Runnable mAnimateKeyguardStatusViewVisibleEndRunnable = () -> { - mKeyguardStatusViewVisibilityAnimating = false; - }; } |