mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-01 08:16:49 +00:00
Do not play unstash animation when unlocking the device am: 94f46e14f4
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/22119728 Change-Id: I03a41c526338a77c53c2bffec5a964fbb5206aa3 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -102,7 +102,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
|
||||
onLauncherResumedOrPaused(mLauncher.hasBeenResumed(), true /* fromInit */);
|
||||
|
||||
onStashedInAppChanged(mLauncher.getDeviceProfile());
|
||||
mTaskbarLauncherStateController.onChangeScreenState(
|
||||
mTaskbarLauncherStateController.updateStateForSysuiFlags(
|
||||
mControllers.getSharedState().sysuiStateFlags, true /* fromInit */);
|
||||
mLauncher.addOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener);
|
||||
}
|
||||
@@ -320,8 +320,8 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChangeScreenState(int screenState) {
|
||||
mTaskbarLauncherStateController.onChangeScreenState(screenState, false /* fromInit */);
|
||||
public void updateStateForSysuiFlags(int sysuiFlags, boolean skipAnim) {
|
||||
mTaskbarLauncherStateController.updateStateForSysuiFlags(sysuiFlags, skipAnim);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -32,7 +32,6 @@ import static com.android.launcher3.taskbar.TaskbarManager.FLAG_HIDE_NAVBAR_WIND
|
||||
import static com.android.launcher3.testing.shared.ResourceUtils.getBoolByName;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_QUICK_SETTINGS_EXPANDED;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_STATE_MASK;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING;
|
||||
|
||||
import android.animation.AnimatorSet;
|
||||
@@ -591,8 +590,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
|
||||
mControllers.voiceInteractionWindowController.setIsVoiceInteractionWindowVisible(
|
||||
(systemUiStateFlags & SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING) != 0, fromInit);
|
||||
|
||||
mControllers.uiController.onChangeScreenState(
|
||||
systemUiStateFlags & SYSUI_STATE_SCREEN_STATE_MASK);
|
||||
mControllers.uiController.updateStateForSysuiFlags(systemUiStateFlags, fromInit);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -30,6 +30,12 @@ public class TaskbarKeyguardController implements TaskbarControllers.LoggableTas
|
||||
| SYSUI_STATE_BACK_DISABLED | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED
|
||||
| SYSUI_STATE_SCREEN_STATE_MASK;
|
||||
|
||||
// If any of these SysUi flags (via QuickstepContract) is set, the device to be considered
|
||||
// locked.
|
||||
public static final int MASK_ANY_SYSUI_LOCKED = SYSUI_STATE_BOUNCER_SHOWING
|
||||
| SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING
|
||||
| SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED;
|
||||
|
||||
private final TaskbarActivityContext mContext;
|
||||
private int mKeyguardSysuiFlags;
|
||||
private boolean mBouncerShowing;
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.android.launcher3.taskbar;
|
||||
|
||||
import static com.android.launcher3.taskbar.TaskbarKeyguardController.MASK_ANY_SYSUI_LOCKED;
|
||||
import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_APP;
|
||||
import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_STASHED_LAUNCHER_STATE;
|
||||
import static com.android.launcher3.taskbar.TaskbarViewController.ALPHA_INDEX_HOME;
|
||||
@@ -92,6 +93,9 @@ public class TaskbarLauncherStateController {
|
||||
*/
|
||||
private static final int FLAG_LAUNCHER_ACTIVE_AT_SCREEN_OFF = 1 << 4;
|
||||
|
||||
/** Whether the device is currently locked. */
|
||||
private static final int FLAG_DEVICE_LOCKED = 1 << 5;
|
||||
|
||||
private static final int FLAGS_LAUNCHER_ACTIVE = FLAG_RESUMED | FLAG_TRANSITION_TO_RESUMED;
|
||||
/** Equivalent to an int with all 1s for binary operation purposes */
|
||||
private static final int FLAGS_ALL = ~0;
|
||||
@@ -259,18 +263,23 @@ public class TaskbarLauncherStateController {
|
||||
mShouldDelayLauncherStateAnim = shouldDelayLauncherStateAnim;
|
||||
}
|
||||
|
||||
/** Screen state changed, see QuickStepContract.SCREEN_STATE_* values. */
|
||||
public void onChangeScreenState(int screenState, boolean fromInit) {
|
||||
/** SysUI flags updated, see QuickStepContract.SYSUI_STATE_* values. */
|
||||
public void updateStateForSysuiFlags(int systemUiStateFlags, boolean skipAnim) {
|
||||
final boolean prevScreenIsOn = hasAnyFlag(FLAG_SCREEN_ON);
|
||||
final boolean currScreenIsOn = hasAnyFlag(screenState, SYSUI_STATE_SCREEN_ON);
|
||||
|
||||
if (prevScreenIsOn == currScreenIsOn) return;
|
||||
final boolean currScreenIsOn = hasAnyFlag(systemUiStateFlags, SYSUI_STATE_SCREEN_ON);
|
||||
|
||||
updateStateForFlag(FLAG_SCREEN_ON, currScreenIsOn);
|
||||
updateStateForFlag(FLAG_LAUNCHER_ACTIVE_AT_SCREEN_OFF,
|
||||
prevScreenIsOn && hasAnyFlag(FLAGS_LAUNCHER_ACTIVE));
|
||||
if (prevScreenIsOn != currScreenIsOn) {
|
||||
// The screen is switching between on/off. When turning off, capture whether the
|
||||
// launcher is active and memoize this state.
|
||||
updateStateForFlag(FLAG_LAUNCHER_ACTIVE_AT_SCREEN_OFF,
|
||||
prevScreenIsOn && hasAnyFlag(FLAGS_LAUNCHER_ACTIVE));
|
||||
}
|
||||
|
||||
if (fromInit) {
|
||||
boolean isDeviceLocked = hasAnyFlag(systemUiStateFlags, MASK_ANY_SYSUI_LOCKED);
|
||||
updateStateForFlag(FLAG_DEVICE_LOCKED, isDeviceLocked);
|
||||
|
||||
if (skipAnim) {
|
||||
applyState(0);
|
||||
} else {
|
||||
applyState();
|
||||
@@ -448,7 +457,13 @@ public class TaskbarLauncherStateController {
|
||||
animatorSet.play(mTaskbarCornerRoundness.animateToValue(cornerRoundness));
|
||||
}
|
||||
|
||||
if (mIconAlignment.isAnimatingToValue(toAlignment)
|
||||
if (hasAnyFlag(changedFlags, FLAG_DEVICE_LOCKED)) {
|
||||
// When transitioning between locked/unlocked, there is no stashing animation.
|
||||
mIconAlignment.cancelAnimation();
|
||||
// updateValue ensures onIconAlignmentRatioChanged will be called if there is an actual
|
||||
// change in value
|
||||
mIconAlignment.updateValue(toAlignment);
|
||||
} else if (mIconAlignment.isAnimatingToValue(toAlignment)
|
||||
|| mIconAlignment.isSettledOnValue(toAlignment)) {
|
||||
// Already at desired value, but make sure we run the callback at the end.
|
||||
animatorSet.addListener(AnimatorListeners.forEndCallback(
|
||||
@@ -656,6 +671,7 @@ public class TaskbarLauncherStateController {
|
||||
appendFlag(result, flags, FLAG_SCREEN_ON, "screen_on");
|
||||
appendFlag(result, flags, FLAG_LAUNCHER_ACTIVE_AT_SCREEN_OFF,
|
||||
"launcher_active_at_screen_off");
|
||||
appendFlag(result, flags, FLAG_DEVICE_LOCKED, "device_locked");
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
|
||||
@@ -27,16 +27,14 @@ import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCH
|
||||
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_LONGPRESS_SHOW;
|
||||
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TRANSIENT_TASKBAR_HIDE;
|
||||
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TRANSIENT_TASKBAR_SHOW;
|
||||
import static com.android.launcher3.taskbar.TaskbarKeyguardController.MASK_ANY_SYSUI_LOCKED;
|
||||
import static com.android.launcher3.util.FlagDebugUtils.appendFlag;
|
||||
import static com.android.launcher3.util.FlagDebugUtils.formatFlagChange;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BOUNCER_SHOWING;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SHOWING;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SWITCHER_SHOWING;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_QUICK_SETTINGS_EXPANDED;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
@@ -89,7 +87,8 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
|
||||
public static final int FLAG_IN_SETUP = 1 << 7; // In the Setup Wizard
|
||||
public static final int FLAG_STASHED_SMALL_SCREEN = 1 << 8; // phone screen gesture nav, stashed
|
||||
public static final int FLAG_STASHED_IN_APP_AUTO = 1 << 9; // Autohide (transient taskbar).
|
||||
public static final int FLAG_STASHED_SYSUI = 1 << 10; // app pinning, keyguard, etc.
|
||||
public static final int FLAG_STASHED_SYSUI = 1 << 10; // app pinning,...
|
||||
public static final int FLAG_STASHED_DEVICE_LOCKED = 1 << 11; // device is locked: keyguard, ...
|
||||
|
||||
// If any of these flags are enabled, isInApp should return true.
|
||||
private static final int FLAGS_IN_APP = FLAG_IN_APP | FLAG_IN_SETUP;
|
||||
@@ -110,6 +109,10 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
|
||||
private static final int FLAGS_REPORT_STASHED_INSETS_TO_APP = FLAGS_STASHED_IN_APP
|
||||
& ~FLAG_STASHED_IN_APP_IME & ~FLAG_STASHED_IN_TASKBAR_ALL_APPS;
|
||||
|
||||
// If any of these flags are enabled, the taskbar must be stashed.
|
||||
private static final int FLAGS_FORCE_STASHED = FLAG_STASHED_SYSUI | FLAG_STASHED_DEVICE_LOCKED
|
||||
| FLAG_STASHED_IN_TASKBAR_ALL_APPS | FLAG_STASHED_SMALL_SCREEN;
|
||||
|
||||
/**
|
||||
* How long to stash/unstash when manually invoked via long press.
|
||||
*
|
||||
@@ -219,10 +222,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
|
||||
boolean inApp = hasAnyFlag(flags, FLAGS_IN_APP);
|
||||
boolean stashedInApp = hasAnyFlag(flags, FLAGS_STASHED_IN_APP);
|
||||
boolean stashedLauncherState = hasAnyFlag(flags, FLAG_IN_STASHED_LAUNCHER_STATE);
|
||||
boolean forceStashed = hasAnyFlag(flags,
|
||||
FLAG_STASHED_SYSUI
|
||||
| FLAG_STASHED_IN_TASKBAR_ALL_APPS
|
||||
| FLAG_STASHED_SMALL_SCREEN);
|
||||
boolean forceStashed = hasAnyFlag(flags, FLAGS_FORCE_STASHED);
|
||||
return (inApp && stashedInApp) || (!inApp && stashedLauncherState) || forceStashed;
|
||||
});
|
||||
|
||||
@@ -584,8 +584,12 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
|
||||
|
||||
// If Hotseat is not the top element during animation to/from Launcher, fade in/out a
|
||||
// already stashed Taskbar.
|
||||
boolean skipStashAnimation = !mControllers.uiController.isHotseatIconOnTopWhenAligned()
|
||||
&& hasAnyFlag(changedFlags, FLAG_IN_APP);
|
||||
boolean hotseatTopElement = mControllers.uiController.isHotseatIconOnTopWhenAligned()
|
||||
|| !hasAnyFlag(changedFlags, FLAG_IN_APP);
|
||||
// If transitioning between locked/unlocked device, do not play a stash animation.
|
||||
boolean unLockedTransition = hasAnyFlag(changedFlags, FLAG_STASHED_DEVICE_LOCKED);
|
||||
boolean skipStashAnimation = !hotseatTopElement || unLockedTransition;
|
||||
|
||||
if (isTransientTaskbar) {
|
||||
createTransientAnimToIsStashed(mAnimator, isStashed, duration, animateBg, changedFlags,
|
||||
skipStashAnimation);
|
||||
@@ -905,11 +909,10 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
|
||||
updateStateForFlag(FLAG_STASHED_IN_APP_SYSUI, hasAnyFlag(systemUiStateFlags,
|
||||
SYSUI_STATE_QUICK_SETTINGS_EXPANDED
|
||||
| SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED));
|
||||
updateStateForFlag(FLAG_STASHED_SYSUI, hasAnyFlag(systemUiStateFlags,
|
||||
SYSUI_STATE_SCREEN_PINNING
|
||||
| SYSUI_STATE_BOUNCER_SHOWING
|
||||
| SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING
|
||||
| SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED));
|
||||
updateStateForFlag(FLAG_STASHED_SYSUI,
|
||||
hasAnyFlag(systemUiStateFlags, SYSUI_STATE_SCREEN_PINNING));
|
||||
updateStateForFlag(FLAG_STASHED_DEVICE_LOCKED,
|
||||
hasAnyFlag(systemUiStateFlags, MASK_ANY_SYSUI_LOCKED));
|
||||
|
||||
// Only update FLAG_STASHED_IN_APP_IME when system gesture is not in progress.
|
||||
mIsImeShowing = hasAnyFlag(systemUiStateFlags, SYSUI_STATE_IME_SHOWING);
|
||||
@@ -1081,6 +1084,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
|
||||
appendFlag(sj, flags, FLAG_IN_SETUP, "FLAG_IN_SETUP");
|
||||
appendFlag(sj, flags, FLAG_STASHED_IN_APP_AUTO, "FLAG_STASHED_IN_APP_AUTO");
|
||||
appendFlag(sj, flags, FLAG_STASHED_SYSUI, "FLAG_STASHED_SYSUI");
|
||||
appendFlag(sj, flags, FLAG_STASHED_DEVICE_LOCKED, "FLAG_STASHED_DEVICE_LOCKED");
|
||||
return sj.toString();
|
||||
}
|
||||
|
||||
|
||||
@@ -125,9 +125,9 @@ public class TaskbarUIController {
|
||||
}
|
||||
|
||||
/**
|
||||
* Screen state changed, see QuickStepContract.SCREEN_STATE_* values.
|
||||
* SysUI flags updated, see QuickStepContract.SYSUI_STATE_* values.
|
||||
*/
|
||||
public void onChangeScreenState(int screenState){
|
||||
public void updateStateForSysuiFlags(int sysuiFlags, boolean skipAnim){
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user