From 0acb2807df31ed7ad03ca71afc22b3119ecb8a6a Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Thu, 11 Mar 2021 15:11:58 -0800 Subject: [PATCH] Limit existing usages of nav bar button alpha to two button mode Bug: 181206743 Test: Manual Change-Id: Id63131e9aae36bb143d6a4807ef37f96dfa05be9 --- .../launcher3/BaseQuickstepLauncher.java | 9 +++-- .../statehandlers/BackButtonAlphaHandler.java | 10 ++--- .../com/android/quickstep/SystemUiProxy.java | 40 +++++++++---------- 3 files changed, 28 insertions(+), 31 deletions(-) diff --git a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java index 6eb1498c09..d1f670d15c 100644 --- a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java @@ -21,6 +21,7 @@ import static com.android.launcher3.LauncherState.FLAG_HIDE_BACK_BUTTON; import static com.android.launcher3.LauncherState.NORMAL; import static com.android.launcher3.util.DisplayController.DisplayHolder.CHANGE_SIZE; import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; +import static com.android.quickstep.SysUINavigationMode.Mode.TWO_BUTTONS; import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY; import android.animation.AnimatorSet; @@ -79,7 +80,7 @@ public abstract class BaseQuickstepLauncher extends Launcher * Reusable command for applying the back button alpha on the background thread. */ public static final UiThreadHelper.AsyncCommand SET_BACK_BUTTON_ALPHA = - (context, arg1, arg2) -> SystemUiProxy.INSTANCE.get(context).setBackButtonAlpha( + (context, arg1, arg2) -> SystemUiProxy.INSTANCE.get(context).setNavBarButtonAlpha( Float.intBitsToFloat(arg1), arg2 != 0); private OverviewActionsView mActionsView; @@ -369,8 +370,10 @@ public abstract class BaseQuickstepLauncher extends Launcher */ private void onLauncherStateOrFocusChanged() { boolean shouldBackButtonBeHidden = shouldBackButtonBeHidden(getStateManager().getState()); - UiThreadHelper.setBackButtonAlphaAsync(this, SET_BACK_BUTTON_ALPHA, - shouldBackButtonBeHidden ? 0f : 1f, true /* animate */); + if (SysUINavigationMode.getMode(this) == TWO_BUTTONS) { + UiThreadHelper.setBackButtonAlphaAsync(this, SET_BACK_BUTTON_ALPHA, + shouldBackButtonBeHidden ? 0f : 1f, true /* animate */); + } if (getDragLayer() != null) { getRootView().setDisallowBackGesture(shouldBackButtonBeHidden); } diff --git a/quickstep/src/com/android/launcher3/statehandlers/BackButtonAlphaHandler.java b/quickstep/src/com/android/launcher3/statehandlers/BackButtonAlphaHandler.java index 13501a452b..ce9430515c 100644 --- a/quickstep/src/com/android/launcher3/statehandlers/BackButtonAlphaHandler.java +++ b/quickstep/src/com/android/launcher3/statehandlers/BackButtonAlphaHandler.java @@ -18,6 +18,7 @@ package com.android.launcher3.statehandlers; import static com.android.launcher3.anim.Interpolators.LINEAR; import static com.android.quickstep.AnimatedFloat.VALUE; +import static com.android.quickstep.SysUINavigationMode.Mode.TWO_BUTTONS; import com.android.launcher3.BaseQuickstepLauncher; import com.android.launcher3.LauncherState; @@ -30,7 +31,7 @@ import com.android.quickstep.SysUINavigationMode; import com.android.quickstep.SystemUiProxy; /** - * State handler for animating back button alpha + * State handler for animating back button alpha in two-button nav mode. */ public class BackButtonAlphaHandler implements StateHandler { @@ -51,14 +52,11 @@ public class BackButtonAlphaHandler implements StateHandler { return; } - if (!SysUINavigationMode.getMode(mLauncher).hasGestures) { - // If the nav mode is not gestural, then force back button alpha to be 1 - UiThreadHelper.setBackButtonAlphaAsync(mLauncher, - BaseQuickstepLauncher.SET_BACK_BUTTON_ALPHA, 1f, true /* animate */); + if (SysUINavigationMode.getMode(mLauncher) != TWO_BUTTONS) { return; } - mBackAlpha.value = SystemUiProxy.INSTANCE.get(mLauncher).getLastBackButtonAlpha(); + mBackAlpha.value = SystemUiProxy.INSTANCE.get(mLauncher).getLastNavButtonAlpha(); animation.setFloat(mBackAlpha, VALUE, mLauncher.shouldBackButtonBeHidden(toState) ? 0 : 1, LINEAR); } diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.java b/quickstep/src/com/android/quickstep/SystemUiProxy.java index 5668817da8..619103c2ef 100644 --- a/quickstep/src/com/android/quickstep/SystemUiProxy.java +++ b/quickstep/src/com/android/quickstep/SystemUiProxy.java @@ -45,7 +45,8 @@ import com.android.systemui.shared.system.RemoteTransitionCompat; /** * Holds the reference to SystemUI. */ -public class SystemUiProxy implements ISystemUiProxy { +public class SystemUiProxy implements ISystemUiProxy, + SysUINavigationMode.NavigationModeChangeListener { private static final String TAG = SystemUiProxy.class.getSimpleName(); public static final MainThreadInitializedObject INSTANCE = @@ -59,14 +60,20 @@ public class SystemUiProxy implements ISystemUiProxy { // Used to dedupe calls to SystemUI private int mLastShelfHeight; private boolean mLastShelfVisible; - private float mLastBackButtonAlpha; - private boolean mLastBackButtonAnimate; + private float mLastNavButtonAlpha; + private boolean mLastNavButtonAnimate; // TODO(141886704): Find a way to remove this private int mLastSystemUiStateFlags; public SystemUiProxy(Context context) { - // Do nothing + SysUINavigationMode.INSTANCE.get(context).addModeChangeListener(this); + } + + @Override + public void onNavigationModeChanged(SysUINavigationMode.Mode newMode) { + // Whenever the nav mode changes, force reset the nav button alpha + setNavBarButtonAlpha(1f, false); } @Override @@ -149,28 +156,17 @@ public class SystemUiProxy implements ISystemUiProxy { return null; } - @Override - public void setBackButtonAlpha(float alpha, boolean animate) { - boolean changed = Float.compare(alpha, mLastBackButtonAlpha) != 0 - || animate != mLastBackButtonAnimate; - if (mSystemUiProxy != null && changed) { - mLastBackButtonAlpha = alpha; - mLastBackButtonAnimate = animate; - try { - mSystemUiProxy.setBackButtonAlpha(alpha, animate); - } catch (RemoteException e) { - Log.w(TAG, "Failed call setBackButtonAlpha", e); - } - } - } - - public float getLastBackButtonAlpha() { - return mLastBackButtonAlpha; + public float getLastNavButtonAlpha() { + return mLastNavButtonAlpha; } @Override public void setNavBarButtonAlpha(float alpha, boolean animate) { - if (mSystemUiProxy != null) { + boolean changed = Float.compare(alpha, mLastNavButtonAlpha) != 0 + || animate != mLastNavButtonAnimate; + if (mSystemUiProxy != null && changed) { + mLastNavButtonAlpha = alpha; + mLastNavButtonAnimate = animate; try { mSystemUiProxy.setNavBarButtonAlpha(alpha, animate); } catch (RemoteException e) {