Fade out the taskbar icons when animating to overview in 3 button nav.
Bug: 231213105
Test: from home, opened recents, then went back home, then went back to recents, resumed an app, then went back to recents and resumed the same app (both in 3-button and gesture nav)
Change-Id: I83b1b33cafb95353f36a126b93fcaf3b536d3bf4
diff --git a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
index 17da0d9..cb73194 100644
--- a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
@@ -734,17 +734,12 @@
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "NavbarButtonsViewController:");
- pw.println(String.format("%s\tmState=%s", prefix, getStateString(mState)));
- pw.println(String.format(
- "%s\tmLightIconColor=0x%s", prefix, Integer.toHexString(mLightIconColor)));
- pw.println(String.format(
- "%s\tmDarkIconColor=0x%s", prefix, Integer.toHexString(mDarkIconColor)));
- pw.println(String.format(
- "%s\tmFloatingRotationButtonBounds=%s", prefix, mFloatingRotationButtonBounds));
- pw.println(String.format(
- "%s\tmSysuiStateFlags=%s",
- prefix,
- QuickStepContract.getSystemUiStateString(mSysuiStateFlags)));
+ pw.println(prefix + "\tmState=" + getStateString(mState));
+ pw.println(prefix + "\tmLightIconColor=" + Integer.toHexString(mLightIconColor));
+ pw.println(prefix + "\tmDarkIconColor=" + Integer.toHexString(mDarkIconColor));
+ pw.println(prefix + "\tmFloatingRotationButtonBounds=" + mFloatingRotationButtonBounds);
+ pw.println(prefix + "\tmSysuiStateFlags=" + QuickStepContract.getSystemUiStateString(
+ mSysuiStateFlags));
}
private static String getStateString(int flags) {
diff --git a/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java b/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java
index f472427..800e162 100644
--- a/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java
@@ -209,10 +209,9 @@
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "StashedHandleViewController:");
- pw.println(String.format(
- "%s\tisStashedHandleVisible=%b", prefix, isStashedHandleVisible()));
- pw.println(String.format("%s\tmStashedHandleWidth=%dpx", prefix, mStashedHandleWidth));
- pw.println(String.format("%s\tmStashedHandleHeight=%dpx", prefix, mStashedHandleHeight));
+ pw.println(prefix + "\tisStashedHandleVisible=" + isStashedHandleVisible());
+ pw.println(prefix + "\tmStashedHandleWidth=" + mStashedHandleWidth);
+ pw.println(prefix + "\tmStashedHandleHeight=" + mStashedHandleHeight);
mRegionSamplingHelper.dump(prefix, pw);
}
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarAutohideSuspendController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarAutohideSuspendController.java
index c5615c7..3cf9c99 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarAutohideSuspendController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarAutohideSuspendController.java
@@ -71,8 +71,7 @@
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarAutohideSuspendController:");
- pw.println(String.format(
- "%s\tmAutohideSuspendFlags=%s", prefix, getStateString(mAutohideSuspendFlags)));
+ pw.println(prefix + "\tmAutohideSuspendFlags=" + getStateString(mAutohideSuspendFlags));
}
private static String getStateString(int flags) {
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java
index 04fcc44..3a0f374 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java
@@ -559,13 +559,11 @@
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarDragController:");
- pw.println(String.format("%s\tmDragIconSize=%dpx", prefix, mDragIconSize));
- pw.println(String.format("%s\tmTempXY=%s", prefix, Arrays.toString(mTempXY)));
- pw.println(String.format("%s\tmRegistrationX=%d", prefix, mRegistrationX));
- pw.println(String.format("%s\tmRegistrationY=%d", prefix, mRegistrationY));
- pw.println(String.format(
- "%s\tmIsSystemDragInProgress=%b", prefix, mIsSystemDragInProgress));
- pw.println(String.format(
- "%s\tisInternalDragInProgess=%b", prefix, super.isDragging()));
+ pw.println(prefix + "\tmDragIconSize=" + mDragIconSize);
+ pw.println(prefix + "\tmTempXY=" + Arrays.toString(mTempXY));
+ pw.println(prefix + "\tmRegistrationX=" + mRegistrationX);
+ pw.println(prefix + "\tmRegistrationY=" + mRegistrationY);
+ pw.println(prefix + "\tmIsSystemDragInProgress=" + mIsSystemDragInProgress);
+ pw.println(prefix + "\tisInternalDragInProgess=" + super.isDragging());
}
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java
index 99c59a8..77ef83c 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java
@@ -144,10 +144,9 @@
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarDragLayerController:");
- pw.println(String.format("%s\tmBgOffset=%.2f", prefix, mBgOffset.value));
- pw.println(String.format("%s\tmFolderMargin=%dpx", prefix, mFolderMargin));
- pw.println(String.format(
- "%s\tmLastSetBackgroundAlpha=%.2f", prefix, mLastSetBackgroundAlpha));
+ pw.println(prefix + "\tmBgOffset=" + mBgOffset.value);
+ pw.println(prefix + "\tmFolderMargin=" + mFolderMargin);
+ pw.println(prefix + "\tmLastSetBackgroundAlpha=" + mLastSetBackgroundAlpha);
}
/**
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduController.java
index e29b14b..32a3c10 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduController.java
@@ -191,12 +191,10 @@
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarEduController:");
- pw.println(String.format("%s\tisShowingEdu=%b", prefix, mTaskbarEduView != null));
- pw.println(String.format("%s\tmWaveAnimTranslationY=%.2f", prefix, mWaveAnimTranslationY));
- pw.println(String.format(
- "%s\tmWaveAnimTranslationYReturnOvershoot=%.2f",
- prefix,
- mWaveAnimTranslationYReturnOvershoot));
+ pw.println(prefix + "\tisShowingEdu=" + (mTaskbarEduView != null));
+ pw.println(prefix + "\tmWaveAnimTranslationY=" + mWaveAnimTranslationY);
+ pw.println(prefix + "\tmWaveAnimTranslationYReturnOvershoot="
+ + mWaveAnimTranslationYReturnOvershoot);
}
/**
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarKeyguardController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarKeyguardController.java
index 56648ea..0808fab 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarKeyguardController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarKeyguardController.java
@@ -111,11 +111,9 @@
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarKeyguardController:");
- pw.println(String.format(
- "%s\tmKeyguardSysuiFlags=%s",
- prefix,
- QuickStepContract.getSystemUiStateString(mKeyguardSysuiFlags)));
- pw.println(String.format("%s\tmBouncerShowing=%b", prefix, mBouncerShowing));
- pw.println(String.format("%s\tmIsScreenOff=%b", prefix, mIsScreenOff));
+ pw.println(prefix + "\tmKeyguardSysuiFlags=" + QuickStepContract.getSystemUiStateString(
+ mKeyguardSysuiFlags));
+ pw.println(prefix + "\tmBouncerShowing=" + mBouncerShowing);
+ pw.println(prefix + "\tmIsScreenOff=" + mIsScreenOff);
}
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java
index ff11f67..85e76b2 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java
@@ -35,6 +35,7 @@
import com.android.launcher3.LauncherState;
import com.android.launcher3.QuickstepTransitionManager;
import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatorListeners;
import com.android.launcher3.statemanager.StateManager;
import com.android.launcher3.util.MultiValueAlpha;
import com.android.quickstep.AnimatedFloat;
@@ -367,11 +368,14 @@
private void playStateTransitionAnim(AnimatorSet animatorSet, long duration,
boolean committed) {
boolean isInStashedState = mLauncherState.isTaskbarStashed(mLauncher);
- float toAlignment = mLauncherState.isTaskbarAlignedWithHotseat(mLauncher) ? 1 : 0;
+ boolean willStashVisually =
+ isInStashedState && mControllers.taskbarStashController.supportsVisualStashing();
+ float toAlignment =
+ mLauncherState.isTaskbarAlignedWithHotseat(mLauncher) && !willStashVisually ? 1 : 0;
- TaskbarStashController controller = mControllers.taskbarStashController;
- controller.updateStateForFlag(FLAG_IN_STASHED_LAUNCHER_STATE, isInStashedState);
- Animator stashAnimator = controller.applyStateWithoutStart(duration);
+ TaskbarStashController stashController = mControllers.taskbarStashController;
+ stashController.updateStateForFlag(FLAG_IN_STASHED_LAUNCHER_STATE, isInStashedState);
+ Animator stashAnimator = stashController.applyStateWithoutStart(duration);
if (stashAnimator != null) {
stashAnimator.addListener(new AnimatorListenerAdapter() {
@Override
@@ -391,9 +395,13 @@
});
animatorSet.play(stashAnimator);
}
-
- // If we're already animating to the value, just leave it be instead of restarting it.
+ if (mIconAlignmentForLauncherState.value == toAlignment) {
+ // Already at expected value, but make sure we run the callback at the end.
+ animatorSet.addListener(AnimatorListeners.forEndCallback(
+ this::onIconAlignmentRatioChangedForStateTransition));
+ }
if (!mIconAlignmentForLauncherState.isAnimatingToValue(toAlignment)) {
+ // If we're already animating to the value, just leave it be instead of restarting it.
mIconAlignmentForLauncherState.finishAnimation();
animatorSet.play(mIconAlignmentForLauncherState.animateToValue(toAlignment)
.setDuration(duration));
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java
index 3392b6b..60f50a9 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java
@@ -18,7 +18,6 @@
import static com.android.internal.app.AssistUtils.INVOCATION_TYPE_HOME_BUTTON_LONG_PRESS;
import static com.android.internal.app.AssistUtils.INVOCATION_TYPE_KEY;
-import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_A11Y_BUTTON_LONGPRESS;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_A11Y_BUTTON_TAP;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_BACK_BUTTON_LONGPRESS;
@@ -28,6 +27,7 @@
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_IME_SWITCHER_BUTTON_TAP;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_OVERVIEW_BUTTON_LONGPRESS;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_OVERVIEW_BUTTON_TAP;
+import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING;
import android.os.Bundle;
@@ -72,9 +72,8 @@
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarNavButtonController:");
- pw.println(String.format(
- "%s\tmLastScreenPinLongPress=%dms", prefix, mLastScreenPinLongPress));
- pw.println(String.format("%s\tmScreenPinned=%b", prefix, mScreenPinned));
+ pw.println(prefix + "\tmLastScreenPinLongPress=" + mLastScreenPinLongPress);
+ pw.println(prefix + "\tmScreenPinned=" + mScreenPinned);
}
@Retention(RetentionPolicy.SOURCE)
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java
index 58ace17..c3b0f57 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java
@@ -98,6 +98,6 @@
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarScrimViewController:");
- pw.println(String.format("%s\tmScrimAlpha.value=%.2f", prefix, mScrimAlpha.value));
+ pw.println(prefix + "\tmScrimAlpha.value=" + mScrimAlpha.value);
}
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
index 2b8fdd1..513f1bb 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
@@ -728,16 +728,14 @@
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarStashController:");
- pw.println(String.format("%s\tmStashedHeight=%dpx", prefix, mStashedHeight));
- pw.println(String.format("%s\tmUnstashedHeight=%dpx", prefix, mUnstashedHeight));
- pw.println(String.format("%s\tmIsStashed=%b", prefix, mIsStashed));
- pw.println(String.format(
- "%s\tappliedState=%s", prefix, getStateString(mStatePropertyHolder.mPrevFlags)));
- pw.println(String.format("%s\tmState=%s", prefix, getStateString(mState)));
- pw.println(String.format(
- "%s\tmIsSystemGestureInProgress=%b", prefix, mIsSystemGestureInProgress));
- pw.println(String.format("%s\tmIsImeShowing=%b", prefix, mIsImeShowing));
- pw.println(String.format("%s\tmIsImeSwitcherShowing=%b", prefix, mIsImeSwitcherShowing));
+ pw.println(prefix + "\tmStashedHeight=" + mStashedHeight);
+ pw.println(prefix + "\tmUnstashedHeight=" + mUnstashedHeight);
+ pw.println(prefix + "\tmIsStashed=" + mIsStashed);
+ pw.println(prefix + "\tappliedState=" + getStateString(mStatePropertyHolder.mPrevFlags));
+ pw.println(prefix + "\tmState=" + getStateString(mState));
+ pw.println(prefix + "\tmIsSystemGestureInProgress=" + mIsSystemGestureInProgress);
+ pw.println(prefix + "\tmIsImeShowing=" + mIsImeShowing);
+ pw.println(prefix + "\tmIsImeSwitcherShowing=" + mIsImeSwitcherShowing);
}
private static String getStateString(int flags) {
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java
index db7dc78..6d45fd2 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java
@@ -373,6 +373,19 @@
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarViewController:");
+
+ mTaskbarIconAlpha.dump(
+ prefix + "\t",
+ pw,
+ "mTaskbarIconAlpha",
+ "ALPHA_INDEX_HOME",
+ "ALPHA_INDEX_KEYGUARD",
+ "ALPHA_INDEX_STASH",
+ "ALPHA_INDEX_RECENTS_DISABLED",
+ "ALPHA_INDEX_NOTIFICATION_EXPANDED",
+ "ALPHA_INDEX_ASSISTANT_INVOKED",
+ "ALPHA_INDEX_IME_BUTTON_NAV");
+
mModelCallbacks.dumpLogs(prefix + "\t", pw);
}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
index 6427e09..c4c9038 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
@@ -22,12 +22,10 @@
import android.graphics.Rect;
import android.os.SystemProperties;
-import com.android.launcher3.BaseQuickstepLauncher;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherState;
import com.android.launcher3.R;
-import com.android.launcher3.taskbar.LauncherTaskbarUIController;
import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.Themes;
import com.android.quickstep.util.LayoutUtils;
@@ -95,13 +93,7 @@
@Override
public boolean isTaskbarStashed(Launcher launcher) {
- if (launcher instanceof BaseQuickstepLauncher) {
- LauncherTaskbarUIController uiController =
- ((BaseQuickstepLauncher) launcher).getTaskbarUIController();
-
- return uiController != null && uiController.supportsVisualStashing();
- }
- return super.isTaskbarStashed(launcher);
+ return true;
}
@Override
diff --git a/src/com/android/launcher3/LauncherState.java b/src/com/android/launcher3/LauncherState.java
index ea6a919..8b5cdbd 100644
--- a/src/com/android/launcher3/LauncherState.java
+++ b/src/com/android/launcher3/LauncherState.java
@@ -208,14 +208,18 @@
return (getVisibleElements(launcher) & elements) == elements;
}
- /** Returns whether taskbar is stashed and thus should replace hotseat with a handle */
+ /**
+ * Returns whether taskbar is stashed and thus should either:
+ * 1) replace hotseat or taskbar icons with a handle in gesture navigation mode or
+ * 2) fade out the hotseat or taskbar icons in 3-button navigation mode.
+ */
public boolean isTaskbarStashed(Launcher launcher) {
return false;
}
/** Returns whether taskbar is aligned with the hotseat vs position inside apps */
public boolean isTaskbarAlignedWithHotseat(Launcher launcher) {
- return !isTaskbarStashed(launcher);
+ return true;
}
/**
diff --git a/src/com/android/launcher3/util/MultiValueAlpha.java b/src/com/android/launcher3/util/MultiValueAlpha.java
index 11cd07c..4b46a0a 100644
--- a/src/com/android/launcher3/util/MultiValueAlpha.java
+++ b/src/com/android/launcher3/util/MultiValueAlpha.java
@@ -23,6 +23,7 @@
import com.android.launcher3.anim.AlphaUpdateListener;
+import java.io.PrintWriter;
import java.util.Arrays;
import java.util.function.Consumer;
@@ -78,6 +79,29 @@
mUpdateVisibility = updateVisibility;
}
+ /**
+ * Dumps the alpha channel values to the given PrintWriter
+ *
+ * @param prefix String to be used before every line
+ * @param pw PrintWriter where the logs should be dumped
+ * @param label String used to help identify this object
+ * @param alphaIndexLabels Strings that represent each alpha channel, these should be entered
+ * in the order of the indexes they represent, starting from 0.
+ */
+ public void dump(String prefix, PrintWriter pw, String label, String... alphaIndexLabels) {
+ pw.println(prefix + label);
+
+ String innerPrefix = prefix + '\t';
+ for (int i = 0; i < alphaIndexLabels.length; i++) {
+ if (i >= mMyProperties.length) {
+ pw.println(innerPrefix + alphaIndexLabels[i] + " given for alpha index " + i
+ + " however there are only " + mMyProperties.length + " alpha channels.");
+ continue;
+ }
+ pw.println(innerPrefix + alphaIndexLabels[i] + "=" + getProperty(i).getValue());
+ }
+ }
+
public class AlphaProperty {
private final int mMyMask;