From 87d752062e9df6fffa7beb907b899cac69359f11 Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Wed, 28 Jul 2021 10:24:54 -0700 Subject: [PATCH] Add depth to -1 screen Wallpaper will zoom out as you drag the overlay Test: manually pull overlay Fixes: 192502999 Change-Id: I9067b70d10497d4e16a5ef601161fbedfa9307e1 --- .../launcher3/BaseQuickstepLauncher.java | 11 ++++++++++ .../statehandlers/DepthController.java | 16 +++++++++++++++ src/com/android/launcher3/Launcher.java | 20 +++++++++++-------- 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java index 5250d18724..e1d05746af 100644 --- a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java @@ -210,6 +210,17 @@ public abstract class BaseQuickstepLauncher extends Launcher } } + /** + * {@code LauncherOverlayCallbacks} scroll amount. + * Indicates transition progress to -1 screen. + * @param progress From 0 to 1. + */ + @Override + public void onScrollChanged(float progress) { + super.onScrollChanged(progress); + mDepthController.onOverlayScrollChanged(progress); + } + @Override public void startIntentSenderForResult(IntentSender intent, int requestCode, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options) { diff --git a/quickstep/src/com/android/launcher3/statehandlers/DepthController.java b/quickstep/src/com/android/launcher3/statehandlers/DepthController.java index 370fb8ef7c..f01ff8bd5d 100644 --- a/quickstep/src/com/android/launcher3/statehandlers/DepthController.java +++ b/quickstep/src/com/android/launcher3/statehandlers/DepthController.java @@ -116,6 +116,10 @@ public class DepthController implements StateHandler, private boolean mCrossWindowBlursEnabled; private WallpaperManagerCompat mWallpaperManager; private SurfaceControl mSurface; + /** + * How visible the -1 overlay is, from 0 to 1. + */ + private float mOverlayScrollProgress; /** * Ratio from 0 to 1, where 0 is fully zoomed out, and 1 is zoomed in. * @see android.service.wallpaper.WallpaperService.Engine#onZoomChanged(float) @@ -251,12 +255,24 @@ public class DepthController implements StateHandler, } } + public void onOverlayScrollChanged(float progress) { + // Round out the progress to dedupe frequent, non-perceptable updates + int progressI = (int) (progress * 256); + float progressF = progressI / 256f; + if (Float.compare(mOverlayScrollProgress, progressF) == 0) { + return; + } + mOverlayScrollProgress = progressF; + dispatchTransactionSurface(mDepth); + } + private boolean dispatchTransactionSurface(float depth) { boolean supportsBlur = BlurUtils.supportsBlursOnWindows(); if (supportsBlur && (mSurface == null || !mSurface.isValid())) { return false; } ensureDependencies(); + depth = Math.max(depth, mOverlayScrollProgress); IBinder windowToken = mLauncher.getRootView().getWindowToken(); if (windowToken != null) { mWallpaperManager.setWallpaperZoomOut(windowToken, depth); diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index e736022772..07c211353f 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -222,7 +222,8 @@ import java.util.stream.Stream; * Default launcher application. */ public class Launcher extends StatefulActivity implements LauncherExterns, - Callbacks, InvariantDeviceProfile.OnIDPChangeListener, PluginListener { + Callbacks, InvariantDeviceProfile.OnIDPChangeListener, PluginListener, + LauncherOverlayCallbacks { public static final String TAG = "Launcher"; public static final ActivityTracker ACTIVITY_TRACKER = new ActivityTracker<>(); @@ -622,7 +623,7 @@ public class Launcher extends StatefulActivity implements Launche @Override public void setLauncherOverlay(LauncherOverlay overlay) { if (overlay != null) { - overlay.setOverlayCallbacks(new LauncherOverlayCallbacksImpl()); + overlay.setOverlayCallbacks(this); } mWorkspace.setLauncherOverlay(overlay); } @@ -1126,12 +1127,15 @@ public class Launcher extends StatefulActivity implements Launche mAppWidgetHost.setActivityResumed(false); } - class LauncherOverlayCallbacksImpl implements LauncherOverlayCallbacks { - - public void onScrollChanged(float progress) { - if (mWorkspace != null) { - mWorkspace.onOverlayScrollChanged(progress); - } + /** + * {@code LauncherOverlayCallbacks} scroll amount. + * Indicates transition progress to -1 screen. + * @param progress From 0 to 1. + */ + @Override + public void onScrollChanged(float progress) { + if (mWorkspace != null) { + mWorkspace.onOverlayScrollChanged(progress); } }