From a84672965e964de445286a2fa77601646d8c77d8 Mon Sep 17 00:00:00 2001 From: Schneider Victor-tulias Date: Fri, 1 Oct 2021 13:53:41 -0700 Subject: [PATCH 1/6] Make gesture nav tutorial skip button always visible. Bug: 198285152 Test: started, completed and tried failing gesture nav tutorial. Change-Id: Ic30a54e6592783abafcf1efe61ecedb9514d094d --- .../quickstep/interaction/TutorialController.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/quickstep/src/com/android/quickstep/interaction/TutorialController.java b/quickstep/src/com/android/quickstep/interaction/TutorialController.java index 94fb55621e..ae3fe670d8 100644 --- a/quickstep/src/com/android/quickstep/interaction/TutorialController.java +++ b/quickstep/src/com/android/quickstep/interaction/TutorialController.java @@ -258,7 +258,6 @@ abstract class TutorialController implements BackGestureAttemptCallback, mFeedbackView.findViewById(R.id.gesture_tutorial_fragment_feedback_subtitle); subtitle.setText(subtitleResId); if (isGestureSuccessful) { - hideCloseButton(); if (mTutorialFragment.isAtFinalStep()) { showActionButton(); } @@ -382,6 +381,7 @@ abstract class TutorialController implements BackGestureAttemptCallback, void transitToController() { hideFeedback(); hideActionButton(); + updateCloseButton(); updateSubtext(); updateDrawables(); @@ -391,26 +391,21 @@ abstract class TutorialController implements BackGestureAttemptCallback, } } - void hideCloseButton() { - mCloseButton.setVisibility(GONE); - } - - void showCloseButton() { - mCloseButton.setVisibility(View.VISIBLE); + void updateCloseButton() { mCloseButton.setTextAppearance(Utilities.isDarkTheme(mContext) ? R.style.TextAppearance_GestureTutorial_Feedback_Subtext : R.style.TextAppearance_GestureTutorial_Feedback_Subtext_Dark); } void hideActionButton() { - showCloseButton(); + mCloseButton.setVisibility(View.VISIBLE); // Invisible to maintain the layout. mActionButton.setVisibility(View.INVISIBLE); mActionButton.setOnClickListener(null); } void showActionButton() { - hideCloseButton(); + mCloseButton.setVisibility(GONE); mActionButton.setVisibility(View.VISIBLE); mActionButton.setOnClickListener(this::onActionButtonClicked); } From aa9a446b76da49a9a1004b2c637206515260651c Mon Sep 17 00:00:00 2001 From: Becky Qiu Date: Wed, 27 Oct 2021 18:47:46 -0700 Subject: [PATCH 2/6] [OneSearch] Add onesearch plugin api to trigger image from URL. Bug: 199289915 Test: manual Change-Id: Ib96de90f87214ea7bd224d0c543cc9578527366e --- src_plugins/com/android/systemui/plugins/OneSearch.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src_plugins/com/android/systemui/plugins/OneSearch.java b/src_plugins/com/android/systemui/plugins/OneSearch.java index 8bd0b75a31..42eb886b99 100644 --- a/src_plugins/com/android/systemui/plugins/OneSearch.java +++ b/src_plugins/com/android/systemui/plugins/OneSearch.java @@ -40,4 +40,7 @@ public interface OneSearch extends Plugin { * @param query The query to get the search suggests for. */ ArrayList getSuggests(Parcelable query); + + /** Get image bitmap with the URL. */ + Parcelable getImageBitmap(String imageUrl); } From 89ef745d1cc1fa5e9ea8de02fde49559783a987e Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Wed, 27 Oct 2021 14:48:47 -0700 Subject: [PATCH 3/6] Update taskbar drag and drop treatment - Disable the FastBitmapDrawable icon instead of setting it to invisible - Suspend auto hide during drag and drop (moved to new TaskbarAutoHideSuspendController) Test: Drag and drop from taskbar and ensure the original icon stays in place but desaturated Test: Open immersive app, drag and drop from taskbar and ensure taskbar doesn't hide before drop Fixes: 200816442 Change-Id: I4b895efd043be75e7e7034bd75e751ffdd2cfdd7 --- .../taskbar/TaskbarActivityContext.java | 7 ++- .../TaskbarAutohideSuspendController.java | 63 +++++++++++++++++++ .../launcher3/taskbar/TaskbarControllers.java | 7 ++- .../taskbar/TaskbarDragController.java | 36 ++++++----- 4 files changed, 93 insertions(+), 20 deletions(-) create mode 100644 quickstep/src/com/android/launcher3/taskbar/TaskbarAutohideSuspendController.java diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 370496aec3..5e60b4a96b 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -69,7 +69,6 @@ import com.android.launcher3.util.ViewCache; import com.android.launcher3.views.ActivityContext; import com.android.quickstep.SysUINavigationMode; import com.android.quickstep.SysUINavigationMode.Mode; -import com.android.quickstep.SystemUiProxy; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.WindowManagerWrapper; @@ -157,7 +156,8 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ new TaskbarKeyguardController(this), new StashedHandleViewController(this, stashedHandleView), new TaskbarStashController(this), - new TaskbarEduController(this)); + new TaskbarEduController(this), + new TaskbarAutohideSuspendController(this)); } public void init(TaskbarSharedState sharedState) { @@ -360,7 +360,8 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ * Updates the TaskbarContainer to MATCH_PARENT vs original Taskbar size. */ public void setTaskbarWindowFullscreen(boolean fullscreen) { - SystemUiProxy.INSTANCE.getNoCreate().notifyTaskbarAutohideSuspend(fullscreen); + mControllers.taskbarAutohideSuspendController.updateFlag( + TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_FULLSCREEN, fullscreen); mIsFullscreen = fullscreen; setTaskbarWindowHeight(fullscreen ? MATCH_PARENT : mLastRequestedNonFullscreenHeight); } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarAutohideSuspendController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarAutohideSuspendController.java new file mode 100644 index 0000000000..e42f83de6a --- /dev/null +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarAutohideSuspendController.java @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.launcher3.taskbar; + +import androidx.annotation.IntDef; + +import com.android.quickstep.SystemUiProxy; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Normally Taskbar will auto-hide when entering immersive (fullscreen) apps. This controller allows + * us to suspend that behavior in certain cases (e.g. opening a Folder or dragging an icon). + */ +public class TaskbarAutohideSuspendController { + + public static final int FLAG_AUTOHIDE_SUSPEND_FULLSCREEN = 1 << 0; + public static final int FLAG_AUTOHIDE_SUSPEND_DRAGGING = 1 << 1; + @IntDef(flag = true, value = { + FLAG_AUTOHIDE_SUSPEND_FULLSCREEN, + FLAG_AUTOHIDE_SUSPEND_DRAGGING, + }) + @Retention(RetentionPolicy.SOURCE) + public @interface AutohideSuspendFlag {} + + private final SystemUiProxy mSystemUiProxy; + + private @AutohideSuspendFlag int mAutohideSuspendFlags = 0; + + public TaskbarAutohideSuspendController(TaskbarActivityContext activity) { + mSystemUiProxy = SystemUiProxy.INSTANCE.get(activity); + } + + public void onDestroy() { + mSystemUiProxy.notifyTaskbarAutohideSuspend(false); + } + + /** + * Adds or removes the given flag, then notifies system UI proxy whether to suspend auto-hide. + */ + public void updateFlag(@AutohideSuspendFlag int flag, boolean enabled) { + if (enabled) { + mAutohideSuspendFlags |= flag; + } else { + mAutohideSuspendFlags &= ~flag; + } + mSystemUiProxy.notifyTaskbarAutohideSuspend(mAutohideSuspendFlags != 0); + } +} diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java index 8684c2925c..7b0053e0a9 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java @@ -37,6 +37,7 @@ public class TaskbarControllers { public final StashedHandleViewController stashedHandleViewController; public final TaskbarStashController taskbarStashController; public final TaskbarEduController taskbarEduController; + public final TaskbarAutohideSuspendController taskbarAutohideSuspendController; /** Do not store this controller, as it may change at runtime. */ @NonNull public TaskbarUIController uiController = TaskbarUIController.DEFAULT; @@ -53,7 +54,8 @@ public class TaskbarControllers { TaskbarKeyguardController taskbarKeyguardController, StashedHandleViewController stashedHandleViewController, TaskbarStashController taskbarStashController, - TaskbarEduController taskbarEduController) { + TaskbarEduController taskbarEduController, + TaskbarAutohideSuspendController taskbarAutoHideSuspendController) { this.taskbarActivityContext = taskbarActivityContext; this.taskbarDragController = taskbarDragController; this.navButtonController = navButtonController; @@ -67,6 +69,7 @@ public class TaskbarControllers { this.stashedHandleViewController = stashedHandleViewController; this.taskbarStashController = taskbarStashController; this.taskbarEduController = taskbarEduController; + this.taskbarAutohideSuspendController = taskbarAutoHideSuspendController; } /** @@ -75,6 +78,7 @@ public class TaskbarControllers { * in constructors for now, as some controllers may still be waiting for init(). */ public void init(TaskbarSharedState sharedState) { + taskbarDragController.init(this); navbarButtonsViewController.init(this, sharedState); if (taskbarActivityContext.isThreeButtonNav()) { rotationButtonController.init(); @@ -101,5 +105,6 @@ public class TaskbarControllers { taskbarUnfoldAnimationController.onDestroy(); taskbarViewController.onDestroy(); stashedHandleViewController.onDestroy(); + taskbarAutohideSuspendController.onDestroy(); } } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java index 1afbd177e7..3bcacb6c8a 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java @@ -15,9 +15,6 @@ */ package com.android.launcher3.taskbar; -import static android.view.View.INVISIBLE; -import static android.view.View.VISIBLE; - import android.content.ClipData; import android.content.ClipDescription; import android.content.Intent; @@ -49,7 +46,6 @@ import com.android.launcher3.dragndrop.DragOptions; import com.android.launcher3.dragndrop.DragView; import com.android.launcher3.dragndrop.DraggableView; import com.android.launcher3.graphics.DragPreviewProvider; -import com.android.launcher3.icons.FastBitmapDrawable; import com.android.launcher3.logging.StatsLogManager; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; @@ -65,6 +61,9 @@ public class TaskbarDragController extends DragController { + btv.post(() -> { startInternalDrag(btv); - btv.setVisibility(INVISIBLE); + btv.getIcon().setIsDisabled(true); + mControllers.taskbarAutohideSuspendController.updateFlag( + TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_DRAGGING, true); }); return true; } private void startInternalDrag(BubbleTextView btv) { - float iconScale = 1f; - Drawable icon = btv.getIcon(); - if (icon instanceof FastBitmapDrawable) { - iconScale = ((FastBitmapDrawable) icon).getAnimatedScale(); - } + float iconScale = btv.getIcon().getAnimatedScale(); // Clear the pressed state if necessary btv.clearFocus(); @@ -239,16 +240,17 @@ public class TaskbarDragController extends DragController Date: Thu, 28 Oct 2021 13:21:15 -0700 Subject: [PATCH 4/6] Fix NPE when TaskView isn't attached to RecentsView Test: theoretical Fixes: 201481275 Change-Id: Ie10b5ebac373e41a4d4113ee3cda737d88adad8a --- quickstep/src/com/android/quickstep/views/TaskMenuView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickstep/src/com/android/quickstep/views/TaskMenuView.java b/quickstep/src/com/android/quickstep/views/TaskMenuView.java index 03ab737366..5c73fbbd22 100644 --- a/quickstep/src/com/android/quickstep/views/TaskMenuView.java +++ b/quickstep/src/com/android/quickstep/views/TaskMenuView.java @@ -210,7 +210,7 @@ public class TaskMenuView extends AbstractFloatingView implements OnScrollChange @Override public void onScrollChanged() { - RecentsView rv = mTaskView.getRecentsView(); + RecentsView rv = mActivity.getOverviewPanel(); setPosition(mTaskView.getX() - rv.getScrollX(), mTaskView.getY() - rv.getScrollY(), rv.getOverScrollShift()); } From 75c97f534bb340b625ea655c207b952a5a406c0e Mon Sep 17 00:00:00 2001 From: Becky Qiu Date: Thu, 28 Oct 2021 17:47:45 -0700 Subject: [PATCH 5/6] [OneSearch] Increase API version number for the one search plugin. Bug: 199289915 Test: manual Change-Id: I540730e067ce70956d2c3c8bb6336e8b6bd97713 --- src_plugins/com/android/systemui/plugins/OneSearch.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src_plugins/com/android/systemui/plugins/OneSearch.java b/src_plugins/com/android/systemui/plugins/OneSearch.java index 42eb886b99..29826c39e3 100644 --- a/src_plugins/com/android/systemui/plugins/OneSearch.java +++ b/src_plugins/com/android/systemui/plugins/OneSearch.java @@ -28,7 +28,7 @@ import java.util.ArrayList; @ProvidesInterface(action = OneSearch.ACTION, version = OneSearch.VERSION) public interface OneSearch extends Plugin { String ACTION = "com.android.systemui.action.PLUGIN_ONE_SEARCH"; - int VERSION = 3; + int VERSION = 4; /** * Get the content provider warmed up. From 5a5a926945ccd020ab9bc35da2e1d2956fb18bd6 Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Thu, 28 Oct 2021 16:39:32 -0700 Subject: [PATCH 6/6] Recreate taskbar when dark mode changes Also dispatch sysui flags to all controllers upon recreate, not just NavbarButtonsViewController. Additionally, tell the controllers to skip the animation due to the flag changes if it's fromInit. Test: Enable themed icons, switch dark theme in quick settings, ensure taskbar updates Fixes: 204403933 Change-Id: Ic43a50cf0456175f9beba5c29360440f051cbd2d --- .../taskbar/NavbarButtonsViewController.java | 8 +++++--- .../taskbar/TaskbarActivityContext.java | 18 ++++++++++++------ .../launcher3/taskbar/TaskbarControllers.java | 2 +- .../launcher3/taskbar/TaskbarManager.java | 4 ++-- .../taskbar/TaskbarScrimViewController.java | 9 ++++++--- .../taskbar/TaskbarStashController.java | 4 ++-- 6 files changed, 28 insertions(+), 17 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java index 69804bdd5f..113bd91f00 100644 --- a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java @@ -121,10 +121,9 @@ public class NavbarButtonsViewController { /** * Initializes the controller */ - public void init(TaskbarControllers controllers, TaskbarSharedState sharedState) { + public void init(TaskbarControllers controllers) { mControllers = controllers; mNavButtonsView.getLayoutParams().height = mContext.getDeviceProfile().taskbarSize; - parseSystemUiFlags(sharedState.sysuiStateFlags); mNavButtonTranslationYMultiplier.value = 1; mA11yLongClickListener = view -> { @@ -290,12 +289,15 @@ public class NavbarButtonsViewController { } } - public void updateStateForSysuiFlags(int systemUiStateFlags) { + public void updateStateForSysuiFlags(int systemUiStateFlags, boolean skipAnim) { if (systemUiStateFlags == mSysuiStateFlags) { return; } parseSystemUiFlags(systemUiStateFlags); applyState(); + if (skipAnim) { + mPropertyHolders.forEach(StatePropertyHolder::endAnimation); + } } /** diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 172b396bcc..db3156bfb9 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -191,6 +191,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ // Initialize controllers after all are constructed. mControllers.init(sharedState); + updateSysuiStateFlags(sharedState.sysuiStateFlags, true /* fromInit */); mWindowManager.addView(mDragLayer, mWindowLayoutParams); } @@ -325,26 +326,28 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ mWindowManager.removeViewImmediate(mDragLayer); } - public void updateSysuiStateFlags(int systemUiStateFlags) { - mControllers.navbarButtonsViewController.updateStateForSysuiFlags(systemUiStateFlags); + public void updateSysuiStateFlags(int systemUiStateFlags, boolean fromInit) { + mControllers.navbarButtonsViewController.updateStateForSysuiFlags(systemUiStateFlags, + fromInit); mControllers.taskbarViewController.setImeIsVisible( mControllers.navbarButtonsViewController.isImeVisible()); int shadeExpandedFlags = SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED | SYSUI_STATE_QUICK_SETTINGS_EXPANDED; - onNotificationShadeExpandChanged((systemUiStateFlags & shadeExpandedFlags) != 0); + onNotificationShadeExpandChanged((systemUiStateFlags & shadeExpandedFlags) != 0, fromInit); mControllers.taskbarViewController.setRecentsButtonDisabled( mControllers.navbarButtonsViewController.isRecentsDisabled()); mControllers.stashedHandleViewController.setIsHomeButtonDisabled( mControllers.navbarButtonsViewController.isHomeDisabled()); mControllers.taskbarKeyguardController.updateStateForSysuiFlags(systemUiStateFlags); - mControllers.taskbarStashController.updateStateForSysuiFlags(systemUiStateFlags); - mControllers.taskbarScrimViewController.updateStateForSysuiFlags(systemUiStateFlags); + mControllers.taskbarStashController.updateStateForSysuiFlags(systemUiStateFlags, fromInit); + mControllers.taskbarScrimViewController.updateStateForSysuiFlags(systemUiStateFlags, + fromInit); } /** * Hides the taskbar icons and background when the notication shade is expanded. */ - private void onNotificationShadeExpandChanged(boolean isExpanded) { + private void onNotificationShadeExpandChanged(boolean isExpanded, boolean skipAnim) { float alpha = isExpanded ? 0 : 1; AnimatorSet anim = new AnimatorSet(); anim.play(mControllers.taskbarViewController.getTaskbarIconAlpha().getProperty( @@ -354,6 +357,9 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ .animateToValue(alpha)); } anim.start(); + if (skipAnim) { + anim.end(); + } } public void onRotationProposal(int rotation, boolean isValid) { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java index 7b0053e0a9..d739eeac26 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java @@ -79,7 +79,7 @@ public class TaskbarControllers { */ public void init(TaskbarSharedState sharedState) { taskbarDragController.init(this); - navbarButtonsViewController.init(this, sharedState); + navbarButtonsViewController.init(this); if (taskbarActivityContext.isThreeButtonNav()) { rotationButtonController.init(); } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index 92cee04f37..5986e22fab 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -101,7 +101,7 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen public void onConfigurationChanged(Configuration newConfig) { int configDiff = mOldConfig.diff(newConfig); int configsRequiringRecreate = ActivityInfo.CONFIG_ASSETS_PATHS - | ActivityInfo.CONFIG_LAYOUT_DIRECTION; + | ActivityInfo.CONFIG_LAYOUT_DIRECTION | ActivityInfo.CONFIG_UI_MODE; if ((configDiff & configsRequiringRecreate) != 0) { // Color has changed, recreate taskbar to reload background color & icons. recreateTaskbar(); @@ -231,7 +231,7 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen public void onSystemUiFlagsChanged(int systemUiStateFlags) { mSharedState.sysuiStateFlags = systemUiStateFlags; if (mTaskbarActivityContext != null) { - mTaskbarActivityContext.updateSysuiStateFlags(systemUiStateFlags); + mTaskbarActivityContext.updateSysuiStateFlags(systemUiStateFlags, false /* fromInit */); } } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java index e7e55efe63..4b4ee4423c 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java @@ -62,7 +62,7 @@ public class TaskbarScrimViewController { /** * Updates the scrim state based on the flags. */ - public void updateStateForSysuiFlags(int stateFlags) { + public void updateStateForSysuiFlags(int stateFlags, boolean skipAnim) { final boolean bubblesExpanded = (stateFlags & SYSUI_STATE_BUBBLES_EXPANDED) != 0; final boolean manageMenuExpanded = (stateFlags & SYSUI_STATE_BUBBLES_MANAGE_MENU_EXPANDED) != 0; @@ -73,15 +73,18 @@ public class TaskbarScrimViewController { // what the total transparency would be. ? (SCRIM_ALPHA + (SCRIM_ALPHA * (1 - SCRIM_ALPHA))) : showScrim ? SCRIM_ALPHA : 0; - showScrim(showScrim, scrimAlpha); + showScrim(showScrim, scrimAlpha, skipAnim); } - private void showScrim(boolean showScrim, float alpha) { + private void showScrim(boolean showScrim, float alpha, boolean skipAnim) { mScrimView.setOnClickListener(showScrim ? (view) -> onClick() : null); mScrimView.setClickable(showScrim); ObjectAnimator anim = mScrimAlpha.animateToValue(showScrim ? alpha : 0); anim.setInterpolator(showScrim ? SCRIM_ALPHA_IN : SCRIM_ALPHA_OUT); anim.start(); + if (skipAnim) { + anim.end(); + } } private void updateScrimAlpha() { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index 0dd4ef19b3..d11eb36feb 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -408,10 +408,10 @@ public class TaskbarStashController { } /** Called when some system ui state has changed. (See SYSUI_STATE_... in QuickstepContract) */ - public void updateStateForSysuiFlags(int systemUiStateFlags) { + public void updateStateForSysuiFlags(int systemUiStateFlags, boolean skipAnim) { updateStateForFlag(FLAG_STASHED_IN_APP_PINNED, hasAnyFlag(systemUiStateFlags, SYSUI_STATE_SCREEN_PINNING)); - applyState(); + applyState(skipAnim ? 0 : TASKBAR_STASH_DURATION); } /**