From cad1f13d2740d26d6e9b9f01bef1edbc64558355 Mon Sep 17 00:00:00 2001 From: Fengjiang Li Date: Thu, 29 Feb 2024 10:24:37 -0800 Subject: [PATCH 1/3] [Predictive Back] Fix predictive back swipe on task bar all apps [1/n] For taskbar all apps, the background scrim is child view of AbstractSlideInView, thus scaling AbstracSlideInView during PB swipe will scale down background scrim. There is no need to re-apply scale effect on background scrim separately. Bug: 327490078 Flag: aconfig com.android.launcher3.enable_predictive_back_gesture TEAMFOOD Test: manual Change-Id: I125670d14bc788664a1371008589e4106496ae2e --- .../allapps/TaskbarAllAppsSlideInView.java | 8 +++++++- .../allapps/ActivityAllAppsContainerView.java | 6 ++++-- .../android/launcher3/views/ScrimView.java | 19 +++++++++++++++---- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java index 5424fcf013..70d25b9753 100644 --- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java +++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java @@ -196,7 +196,13 @@ public class TaskbarAllAppsSlideInView extends AbstractSlideInView } @Override - public void drawOnScrimWithScale(Canvas canvas, float scale) { + public void drawOnScrimWithScaleAndBottomOffset( + Canvas canvas, float scale, @Px int bottomOffsetPx) { final View panel = mBottomSheetBackground; final boolean hasBottomSheet = panel.getVisibility() == VISIBLE; final float translationY = ((View) panel.getParent()).getTranslationY(); @@ -1384,6 +1385,7 @@ public class ActivityAllAppsContainerView final float topWithScale = topNoScale + verticalScaleOffset; final float leftWithScale = panel.getLeft() + horizontalScaleOffset; final float rightWithScale = panel.getRight() - horizontalScaleOffset; + final float bottomWithOffset = panel.getBottom() + bottomOffsetPx; // Draw full background panel for tablets. if (hasBottomSheet) { mHeaderPaint.setColor(mBottomSheetBackgroundColor); @@ -1393,7 +1395,7 @@ public class ActivityAllAppsContainerView leftWithScale, topWithScale, rightWithScale, - panel.getBottom()); + bottomWithOffset); mTmpPath.reset(); mTmpPath.addRoundRect(mTmpRectF, mBottomSheetCornerRadii, Direction.CW); canvas.drawPath(mTmpPath, mHeaderPaint); diff --git a/src/com/android/launcher3/views/ScrimView.java b/src/com/android/launcher3/views/ScrimView.java index ca80c516f0..f6c49847de 100644 --- a/src/com/android/launcher3/views/ScrimView.java +++ b/src/com/android/launcher3/views/ScrimView.java @@ -26,6 +26,7 @@ import android.util.AttributeSet; import android.view.View; import androidx.annotation.NonNull; +import androidx.annotation.Px; import androidx.core.graphics.ColorUtils; import com.android.launcher3.BaseActivity; @@ -187,9 +188,19 @@ public class ScrimView extends View implements Insettable { * A Utility interface allowing for other surfaces to draw on ScrimView */ public interface ScrimDrawingController { - /** - * Called inside ScrimView#OnDraw - */ - void drawOnScrimWithScale(Canvas canvas, float scale); + + /** Draw scrim view on canvas with scale. */ + default void drawOnScrimWithScale(Canvas canvas, float scale) { + drawOnScrimWithScaleAndBottomOffset(canvas, scale, 0); + } + + /** Draw scrim view on canvas with bottomOffset. */ + default void drawOnScrimWithBottomOffset(Canvas canvas, @Px int bottomOffsetPx) { + drawOnScrimWithScaleAndBottomOffset(canvas, 1f, bottomOffsetPx); + } + + /** Draw scrim view on canvas with scale and bottomOffset. */ + void drawOnScrimWithScaleAndBottomOffset( + Canvas canvas, float scale, @Px int bottomOffsetPx); } } From 9280a68bbdf93a4cd25c6baa149723571d0ccf5c Mon Sep 17 00:00:00 2001 From: Fengjiang Li Date: Thu, 29 Feb 2024 10:31:59 -0800 Subject: [PATCH 2/3] [Predictive Back] Dismiss taskbar all apps's scroll bar during swipe gesture [2/n] Bug: 327490078 Flag: aconfig com.android.launcher3.enable_predictive_back_gesture TEAMFOOD Test: manual Change-Id: I0c6585e6374db9412c8399ce3fdaf57348043d36 --- .../taskbar/allapps/TaskbarAllAppsSlideInView.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java index 70d25b9753..82a2f45766 100644 --- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java +++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java @@ -35,6 +35,7 @@ import androidx.annotation.Nullable; import com.android.launcher3.DeviceProfile; import com.android.launcher3.Insettable; import com.android.launcher3.R; +import com.android.launcher3.allapps.AllAppsRecyclerView; import com.android.launcher3.anim.AnimatorListeners; import com.android.launcher3.anim.PendingAnimation; import com.android.launcher3.config.FeatureFlags; @@ -211,6 +212,11 @@ public class TaskbarAllAppsSlideInView extends AbstractSlideInView Date: Thu, 29 Feb 2024 11:03:42 -0800 Subject: [PATCH 3/3] [Predictive Back] Recover taskbar all apps scale to 1f with animation if user swipe back within search [3/n] Fix: 327490078 Flag: aconfig com.android.launcher3.enable_predictive_back_gesture TEAMFOOD Test: manual Change-Id: Iab1de455bf23d73b34f4a0d60f7e7a143bd028d1 --- .../taskbar/allapps/TaskbarAllAppsSlideInView.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java index 82a2f45766..e0e78f9619 100644 --- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java +++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java @@ -267,7 +267,11 @@ public class TaskbarAllAppsSlideInView extends AbstractSlideInView