From 16a024df71fe1b33016487591775e76b188213e8 Mon Sep 17 00:00:00 2001 From: Andy Wickham Date: Fri, 28 Mar 2025 18:46:27 +0000 Subject: [PATCH] Adds Blur and BlurFallback styles for All Apps. Technically these styles can be used throughout Launcher, e.g. Widget Picker and Folders, but this CL only applies it to All Apps. At a high level, views wishing to apply transparency to show blur should use these new attr values rather than colors directly. When blur changes, e.g. starting or stopping battery saver, the style is re-applied and revelant views are invalidated. For Launcher, this is handled by DepthController, and for Taskbar it's handled by a CrossWindowBlurListener. Also updated the Private Space animation slightly to account for the translucent decorators (specifically, we can't use the mask view to cover them when blur is enabled). Screenshots: https://drive.google.com/drive/folders/1tU472KHotgEBpT-Ec9VOBWPBf_YdVqv2?resourcekey=0-ebf7W8O6iDJ4UVMtRzTABg&usp=sharing Private Space animations: https://drive.google.com/file/d/1h5pn8Xb17TPcbujr7uSAJNTq8kwNZoIp/view?usp=drive_link&resourcekey=0-TzpaJ16Gg8_QJctBx4oiIg Private Space QS Tile animations: https://drive.google.com/file/d/1dCuqnqd5z2kSBEakGobMlEkMwFDBWRbJ/view?usp=drive_link&resourcekey=0-qRVFPb-a6OzaZQOf4x86Jw Bug: 371343636 Test: Manual Flag: com.android.launcher3.all_apps_blur Change-Id: Ia9f581f50d1adc0830569656bdeb751deb710a9c --- quickstep/res/values-night/colors.xml | 1 - quickstep/res/values/colors.xml | 1 + quickstep/res/values/styles.xml | 20 ++++ .../statehandlers/DepthController.java | 2 +- .../allapps/TaskbarAllAppsSlideInView.java | 17 +-- .../overlay/TaskbarOverlayContext.java | 16 +++ .../overlay/TaskbarOverlayController.java | 11 ++ .../uioverrides/QuickstepLauncher.java | 14 +++ .../uioverrides/states/AllAppsState.java | 9 +- .../quickstep/util/BaseDepthController.java | 38 +++++-- .../all_apps_tabs_background_unselected.xml | 2 +- ...pps_tabs_background_unselected_focused.xml | 2 +- res/drawable/bg_ps_header.xml | 26 ----- res/drawable/bg_ps_mask_left_corner.xml | 2 +- res/drawable/bg_ps_mask_right_corner.xml | 2 +- res/drawable/inset_rounded_action_button.xml | 4 +- res/drawable/ps_settings_background.xml | 2 +- res/drawable/work_card.xml | 2 +- res/layout/private_space_header.xml | 24 ++--- res/layout/private_space_mask_view.xml | 2 +- res/values/attrs.xml | 10 +- res/values/dimens.xml | 1 - res/values/styles.xml | 12 ++- src/com/android/launcher3/Launcher.java | 3 + .../allapps/ActivityAllAppsContainerView.java | 100 ++++++++++++++---- .../allapps/AlphabeticalAppsList.java | 2 +- .../launcher3/allapps/BaseAllAppsAdapter.java | 9 +- .../launcher3/allapps/FloatingHeaderView.java | 5 +- .../launcher3/allapps/FloatingMaskView.java | 20 ++++ .../allapps/PrivateProfileManager.java | 62 ++++------- .../RecyclerViewAnimationController.java | 1 - .../launcher3/allapps/SearchUiManager.java | 3 + .../allapps/SectionDecorationHandler.java | 36 ++++--- .../allapps/SectionDecorationInfo.java | 7 +- .../launcher3/views/ActivityContext.java | 10 ++ .../PersonalWorkSlidingTabStrip.java | 11 +- .../allapps/PrivateProfileManagerTest.java | 7 +- 37 files changed, 330 insertions(+), 166 deletions(-) delete mode 100644 res/drawable/bg_ps_header.xml diff --git a/quickstep/res/values-night/colors.xml b/quickstep/res/values-night/colors.xml index 7cb85bcc8e..293c00c877 100644 --- a/quickstep/res/values-night/colors.xml +++ b/quickstep/res/values-night/colors.xml @@ -16,7 +16,6 @@ #99000000 - #000000 #202124 diff --git a/quickstep/res/values/colors.xml b/quickstep/res/values/colors.xml index 70c38c7478..a1b64fc3a9 100644 --- a/quickstep/res/values/colors.xml +++ b/quickstep/res/values/colors.xml @@ -22,6 +22,7 @@ #61FFFFFF #3c000000 #3cffffff + #66404040 #E0E0E0 diff --git a/quickstep/res/values/styles.xml b/quickstep/res/values/styles.xml index 54babbc686..82d7ce76a9 100644 --- a/quickstep/res/values/styles.xml +++ b/quickstep/res/values/styles.xml @@ -379,4 +379,24 @@ 16sp 36dp + + + + diff --git a/quickstep/src/com/android/launcher3/statehandlers/DepthController.java b/quickstep/src/com/android/launcher3/statehandlers/DepthController.java index d9808308e8..969e199522 100644 --- a/quickstep/src/com/android/launcher3/statehandlers/DepthController.java +++ b/quickstep/src/com/android/launcher3/statehandlers/DepthController.java @@ -53,7 +53,7 @@ public class DepthController extends BaseDepthController implements StateHandler private final Consumer mCrossWindowBlurListener = this::setCrossWindowBlursEnabled; - private final Runnable mOpaquenessListener = this::applyDepthAndBlur; + private final Runnable mOpaquenessListener = this::onBlurChange; // Workaround for animating the depth when multiwindow mode changes. private boolean mIgnoreStateChangesDuringMultiWindowAnimation = false; diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java index 916b28ec0f..dabc7dafef 100644 --- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java +++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java @@ -20,6 +20,7 @@ import static com.android.app.animation.Interpolators.EMPHASIZED; import static com.android.app.animation.Interpolators.LINEAR; import static com.android.launcher3.touch.AllAppsSwipeController.ALL_APPS_FADE_MANUAL; import static com.android.launcher3.touch.AllAppsSwipeController.SCRIM_FADE_MANUAL; +import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; import android.animation.Animator; import android.content.Context; @@ -28,6 +29,7 @@ import android.graphics.Rect; import android.os.Handler; import android.os.Looper; import android.util.AttributeSet; +import android.view.CrossWindowBlurListeners; import android.view.MotionEvent; import android.view.View; import android.view.animation.Interpolator; @@ -47,11 +49,14 @@ import com.android.launcher3.taskbar.overlay.TaskbarOverlayContext; import com.android.launcher3.util.Themes; import com.android.launcher3.views.AbstractSlideInView; +import java.util.function.Consumer; + /** Wrapper for taskbar all apps with slide-in behavior. */ public class TaskbarAllAppsSlideInView extends AbstractSlideInView implements Insettable, DeviceProfile.OnDeviceProfileChangeListener { private final Handler mHandler; private final int mMaxBlurRadius; + private final Consumer mWindowBlurListener = blursEnabled -> invalidate(); private TaskbarAllAppsContainerView mAppsView; private float mShiftRange; @@ -214,6 +219,7 @@ public class TaskbarAllAppsSlideInView extends AbstractSlideInView - + \ No newline at end of file diff --git a/res/drawable/all_apps_tabs_background_unselected_focused.xml b/res/drawable/all_apps_tabs_background_unselected_focused.xml index 3564a0763e..83038926ba 100644 --- a/res/drawable/all_apps_tabs_background_unselected_focused.xml +++ b/res/drawable/all_apps_tabs_background_unselected_focused.xml @@ -28,7 +28,7 @@ android:top="@dimen/all_apps_tabs_focus_border"> - + diff --git a/res/drawable/bg_ps_header.xml b/res/drawable/bg_ps_header.xml deleted file mode 100644 index 87a21e485f..0000000000 --- a/res/drawable/bg_ps_header.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - diff --git a/res/drawable/bg_ps_mask_left_corner.xml b/res/drawable/bg_ps_mask_left_corner.xml index 43eeedb0b4..f87c497751 100644 --- a/res/drawable/bg_ps_mask_left_corner.xml +++ b/res/drawable/bg_ps_mask_left_corner.xml @@ -24,7 +24,7 @@ + android:fillColor="@android:color/white" /> \ No newline at end of file diff --git a/res/drawable/bg_ps_mask_right_corner.xml b/res/drawable/bg_ps_mask_right_corner.xml index d63b866f9c..7a4c0d80c6 100644 --- a/res/drawable/bg_ps_mask_right_corner.xml +++ b/res/drawable/bg_ps_mask_right_corner.xml @@ -24,7 +24,7 @@ + android:fillColor="@android:color/white" /> \ No newline at end of file diff --git a/res/drawable/inset_rounded_action_button.xml b/res/drawable/inset_rounded_action_button.xml index 8ae40c07bb..7b4c4d03c0 100644 --- a/res/drawable/inset_rounded_action_button.xml +++ b/res/drawable/inset_rounded_action_button.xml @@ -21,10 +21,10 @@ android:insetRight="@dimen/inset_rounded_action_button"> - + + android:color="?attr/allAppsSurfaceLow" /> diff --git a/res/drawable/ps_settings_background.xml b/res/drawable/ps_settings_background.xml index 7746012d40..7d568dc68e 100644 --- a/res/drawable/ps_settings_background.xml +++ b/res/drawable/ps_settings_background.xml @@ -18,6 +18,6 @@ android:inset="4dp"> - + \ No newline at end of file diff --git a/res/drawable/work_card.xml b/res/drawable/work_card.xml index 0e37d4f7b9..ff66971af0 100644 --- a/res/drawable/work_card.xml +++ b/res/drawable/work_card.xml @@ -17,7 +17,7 @@ - + diff --git a/res/layout/private_space_header.xml b/res/layout/private_space_header.xml index db11d7bff2..4efb6aca8c 100644 --- a/res/layout/private_space_header.xml +++ b/res/layout/private_space_header.xml @@ -16,18 +16,18 @@ --> + android:id="@+id/ps_header_layout" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="@dimen/ps_header_height" + android:background="@android:color/transparent" + android:clipToOutline="true" + android:gravity="center_vertical" + android:textDirection="locale" + android:orientation="horizontal" + android:contentDescription="@string/ps_container_lock_button_content_description" + android:importantForAccessibility="yes"> + android:background="@android:color/white"/> \ No newline at end of file diff --git a/res/values/attrs.xml b/res/values/attrs.xml index 7d50d7dc02..581be98f9e 100644 --- a/res/values/attrs.xml +++ b/res/values/attrs.xml @@ -19,9 +19,13 @@ - + + + + + @@ -46,6 +50,10 @@ + + + + diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 88f542eb5c..dc4daebbe1 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -552,7 +552,6 @@ 300dp - 28dp 72dp 48dp 48dp diff --git a/res/values/styles.xml b/res/values/styles.xml index b7e19e5aa9..6ed5a77a92 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -39,10 +39,14 @@