Merge "Add wallpaper zoom to areas that have blur" into ub-launcher3-master

This commit is contained in:
Lucas Dupin
2020-03-18 21:59:33 +00:00
committed by Android (Google) Code Review
20 changed files with 141 additions and 146 deletions
@@ -14,8 +14,5 @@
limitations under the License.
-->
<resources>
<integer name="app_background_blur_radius">150</integer>
<integer name="allapps_background_blur_radius">90</integer>
<integer name="overview_background_blur_radius">50</integer>
<integer name="folder_background_blur_radius_adjustment">20</integer>
<integer name="max_depth_blur_radius">150</integer>
</resources>
@@ -91,7 +91,7 @@ public final class LauncherAppTransitionManagerImpl extends QuickstepAppTransiti
AppWindowAnimationHelper helper =
new AppWindowAnimationHelper(recentsView.getPagedViewOrientedState(), mLauncher);
Animator recentsAnimator = getRecentsWindowAnimator(taskView, skipLauncherChanges,
appTargets, wallpaperTargets, mLauncher.getBackgroundBlurController(), helper);
appTargets, wallpaperTargets, mLauncher.getDepthController(), helper);
anim.play(recentsAnimator.setDuration(RECENTS_LAUNCH_DURATION));
Animator childStateAnimation = null;
@@ -19,7 +19,6 @@ import android.content.Context;
import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.Launcher;
import com.android.launcher3.R;
import com.android.launcher3.allapps.AllAppsTransitionController;
import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.quickstep.util.LayoutUtils;
@@ -107,7 +106,7 @@ public class BackgroundAppState extends OverviewState {
}
@Override
public int getBackgroundBlurRadius(Context context) {
return context.getResources().getInteger(R.integer.app_background_blur_radius);
public float getDepth(Context context) {
return 1f;
}
}
@@ -207,8 +207,8 @@ public class OverviewState extends LauncherState {
}
@Override
public int getBackgroundBlurRadius(Context context) {
return context.getResources().getInteger(R.integer.overview_background_blur_radius);
public float getDepth(Context context) {
return 1f;
}
@Override
@@ -19,7 +19,7 @@ import static com.android.launcher3.LauncherState.BACKGROUND_APP;
import static com.android.launcher3.LauncherState.OVERVIEW;
import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
import static com.android.launcher3.anim.Interpolators.TOUCH_RESPONSE_INTERPOLATOR;
import static com.android.launcher3.uioverrides.BackgroundBlurController.BACKGROUND_BLUR;
import static com.android.launcher3.uioverrides.DepthController.DEPTH;
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_OPENING;
@@ -34,7 +34,7 @@ import android.view.View;
import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.anim.AnimationSuccessListener;
import com.android.launcher3.uioverrides.BackgroundBlurController;
import com.android.launcher3.uioverrides.DepthController;
import com.android.quickstep.util.AppWindowAnimationHelper;
import com.android.quickstep.util.AppWindowAnimationHelper.TransformParams;
import com.android.quickstep.util.RemoteAnimationProvider;
@@ -105,10 +105,10 @@ final class AppToOverviewAnimationProvider<T extends BaseDraggingActivity> exten
mRecentsView.setRunningTaskIconScaledDown(true);
}
BackgroundBlurController blurController = mActivityInterface.getBackgroundBlurController();
if (blurController != null) {
DepthController depthController = mActivityInterface.getDepthController();
if (depthController != null) {
// Update the surface to be the lowest closing app surface
blurController.setSurfaceToLauncher(mRecentsView);
depthController.setSurfaceToLauncher(mRecentsView);
}
AnimatorSet anim = new AnimatorSet();
@@ -124,7 +124,7 @@ final class AppToOverviewAnimationProvider<T extends BaseDraggingActivity> exten
if (mActivity == null) {
Log.e(TAG, "Animation created, before activity");
anim.play(ValueAnimator.ofInt(0, 1).setDuration(RECENTS_LAUNCH_DURATION))
.with(createBackgroundBlurAnimator(blurController));
.with(createDepthAnimator(depthController));
return anim;
}
@@ -136,7 +136,7 @@ final class AppToOverviewAnimationProvider<T extends BaseDraggingActivity> exten
if (runningTaskTarget == null) {
Log.e(TAG, "No closing app");
anim.play(ValueAnimator.ofInt(0, 1).setDuration(RECENTS_LAUNCH_DURATION))
.with(createBackgroundBlurAnimator(blurController));
.with(createDepthAnimator(depthController));
return anim;
}
@@ -184,7 +184,7 @@ final class AppToOverviewAnimationProvider<T extends BaseDraggingActivity> exten
});
}
anim.play(valueAnimator)
.with(createBackgroundBlurAnimator(blurController));
.with(createDepthAnimator(depthController));
return anim;
}
@@ -197,14 +197,14 @@ final class AppToOverviewAnimationProvider<T extends BaseDraggingActivity> exten
return RECENTS_LAUNCH_DURATION;
}
private Animator createBackgroundBlurAnimator(BackgroundBlurController blurController) {
if (blurController == null) {
private Animator createDepthAnimator(DepthController depthController) {
if (depthController == null) {
// Dummy animation
return ValueAnimator.ofInt(0);
}
return ObjectAnimator.ofInt(blurController, BACKGROUND_BLUR,
BACKGROUND_APP.getBackgroundBlurRadius(mActivity),
OVERVIEW.getBackgroundBlurRadius(mActivity))
return ObjectAnimator.ofFloat(depthController, DEPTH,
BACKGROUND_APP.getDepth(mActivity),
OVERVIEW.getDepth(mActivity))
.setDuration(RECENTS_LAUNCH_DURATION);
}
}
@@ -56,8 +56,8 @@ import com.android.launcher3.allapps.DiscoveryBounce;
import com.android.launcher3.anim.AnimatorPlaybackController;
import com.android.launcher3.appprediction.PredictionUiStateManager;
import com.android.launcher3.touch.PagedOrientationHandler;
import com.android.launcher3.uioverrides.BackgroundBlurController;
import com.android.launcher3.uioverrides.BackgroundBlurController.ClampedBlurProperty;
import com.android.launcher3.uioverrides.DepthController;
import com.android.launcher3.uioverrides.DepthController.ClampedDepthProperty;
import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.launcher3.views.FloatingIconView;
import com.android.quickstep.SysUINavigationMode.Mode;
@@ -330,18 +330,17 @@ public final class LauncherActivityInterface implements BaseActivityInterface<La
endState.getVerticalProgress(activity)));
}
// Animate the blur
BackgroundBlurController blurController = getBackgroundBlurController();
int fromBlurRadius = fromState.getBackgroundBlurRadius(activity);
int toBlurRadius = endState.getBackgroundBlurRadius(activity);
Animator backgroundBlur = ObjectAnimator.ofInt(blurController,
new ClampedBlurProperty(toBlurRadius, fromBlurRadius),
fromBlurRadius, toBlurRadius);
anim.play(backgroundBlur);
// Animate the blur and wallpaper zoom
DepthController depthController = getDepthController();
float fromDepthRatio = fromState.getDepth(activity);
float toDepthRatio = endState.getDepth(activity);
Animator depthAnimator = ObjectAnimator.ofFloat(depthController,
new ClampedDepthProperty(fromDepthRatio, toDepthRatio),
fromDepthRatio, toDepthRatio);
anim.play(depthAnimator);
playScaleDownAnim(anim, activity, fromState, endState);
anim.setDuration(transitionLength * 2);
anim.setInterpolator(LINEAR);
AnimatorPlaybackController controller =
@@ -558,11 +557,11 @@ public final class LauncherActivityInterface implements BaseActivityInterface<La
@Nullable
@Override
public BackgroundBlurController getBackgroundBlurController() {
public DepthController getDepthController() {
BaseQuickstepLauncher launcher = getCreatedActivity();
if (launcher == null) {
return null;
}
return launcher.getBackgroundBlurController();
return launcher.getDepthController();
}
}
@@ -294,7 +294,7 @@ public class LauncherSwipeHandler<T extends BaseDraggingActivity>
}
setupRecentsViewUi();
mActivityInterface.getBackgroundBlurController().setSurfaceToLauncher(mRecentsView);
mActivityInterface.getDepthController().setSurfaceToLauncher(mRecentsView);
if (mDeviceState.getNavMode() == TWO_BUTTONS) {
// If the device is in two button mode, swiping up will show overview with predictions
@@ -186,7 +186,7 @@ public final class RecentsActivity extends BaseRecentsActivity {
AppWindowAnimationHelper helper = new AppWindowAnimationHelper(
mFallbackRecentsView.getPagedViewOrientedState(), this);
Animator recentsAnimator = getRecentsWindowAnimator(taskView, !activityClosing, appTargets,
wallpaperTargets, null /* backgroundBlurController */,
wallpaperTargets, null /* depthController */,
helper);
target.play(recentsAnimator.setDuration(RECENTS_LAUNCH_DURATION));
@@ -19,7 +19,7 @@ import static com.android.launcher3.LauncherState.BACKGROUND_APP;
import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.launcher3.anim.Interpolators.TOUCH_RESPONSE_INTERPOLATOR;
import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.launcher3.uioverrides.BackgroundBlurController.BACKGROUND_BLUR;
import static com.android.launcher3.uioverrides.DepthController.DEPTH;
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_OPENING;
import android.animation.Animator;
@@ -35,7 +35,7 @@ import com.android.launcher3.BaseActivity;
import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.ItemInfo;
import com.android.launcher3.Utilities;
import com.android.launcher3.uioverrides.BackgroundBlurController;
import com.android.launcher3.uioverrides.DepthController;
import com.android.quickstep.util.AppWindowAnimationHelper;
import com.android.quickstep.util.MultiValueUpdateListener;
import com.android.quickstep.views.RecentsView;
@@ -123,7 +123,7 @@ public final class TaskViewUtils {
public static Animator getRecentsWindowAnimator(TaskView v, boolean skipViewChanges,
RemoteAnimationTargetCompat[] appTargets,
RemoteAnimationTargetCompat[] wallpaperTargets,
BackgroundBlurController backgroundBlurController,
DepthController depthController,
final AppWindowAnimationHelper inOutHelper) {
SyncRtSurfaceTransactionApplierCompat applier =
new SyncRtSurfaceTransactionApplierCompat(v);
@@ -215,9 +215,9 @@ public final class TaskViewUtils {
}
});
if (backgroundBlurController != null) {
ObjectAnimator backgroundRadiusAnim = ObjectAnimator.ofInt(backgroundBlurController,
BACKGROUND_BLUR, BACKGROUND_APP.getBackgroundBlurRadius(v.getContext()));
if (depthController != null) {
ObjectAnimator backgroundRadiusAnim = ObjectAnimator.ofFloat(depthController,
DEPTH, BACKGROUND_APP.getDepth(v.getContext()));
animatorSet.playTogether(appAnimator, backgroundRadiusAnim);
} else {
animatorSet.play(appAnimator);
@@ -46,9 +46,9 @@ import com.android.launcher3.R;
import com.android.launcher3.anim.Interpolators;
import com.android.launcher3.appprediction.PredictionUiStateManager;
import com.android.launcher3.appprediction.PredictionUiStateManager.Client;
import com.android.launcher3.states.RotationHelper;
import com.android.launcher3.uioverrides.BackgroundBlurController;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.states.RotationHelper;
import com.android.launcher3.uioverrides.DepthController;
import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper;
import com.android.launcher3.util.TraceHelper;
import com.android.launcher3.views.ScrimView;
@@ -409,7 +409,7 @@ public class LauncherRecentsView extends RecentsView<Launcher> implements StateL
}
@Override
protected BackgroundBlurController getBackgroundBlurController() {
return mActivity.getBackgroundBlurController();
protected DepthController getDepthController() {
return mActivity.getDepthController();
}
}
@@ -29,7 +29,7 @@ import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.launcher3.config.FeatureFlags.ENABLE_OVERVIEW_ACTIONS;
import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.launcher3.uioverrides.BackgroundBlurController.BACKGROUND_BLUR;
import static com.android.launcher3.uioverrides.DepthController.DEPTH;
import static com.android.launcher3.uioverrides.touchcontrollers.TaskViewTouchController.SUCCESS_TRANSITION_PROGRESS;
import static com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch.TAP;
import static com.android.launcher3.userevent.nano.LauncherLogProto.ControlType.CLEAR_ALL_BUTTON;
@@ -97,7 +97,7 @@ import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.graphics.RotationMode;
import com.android.launcher3.states.RotationHelper;
import com.android.launcher3.touch.PagedOrientationHandler.CurveProperties;
import com.android.launcher3.uioverrides.BackgroundBlurController;
import com.android.launcher3.uioverrides.DepthController;
import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction;
import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch;
@@ -1702,11 +1702,11 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
appWindowAnimationHelper.prepareAnimation(mActivity.getDeviceProfile(), true /* isOpening */);
AnimatorSet anim = createAdjacentPageAnimForTaskLaunch(tv, appWindowAnimationHelper);
BackgroundBlurController blurController = getBackgroundBlurController();
if (blurController != null) {
ObjectAnimator backgroundBlur = ObjectAnimator.ofInt(blurController, BACKGROUND_BLUR,
BACKGROUND_APP.getBackgroundBlurRadius(mActivity));
anim.play(backgroundBlur);
DepthController depthController = getDepthController();
if (depthController != null) {
ObjectAnimator depthAnimator = ObjectAnimator.ofFloat(depthController, DEPTH,
BACKGROUND_APP.getDepth(mActivity));
anim.play(depthAnimator);
}
anim.play(progressAnim);
anim.setDuration(duration).setInterpolator(interpolator);
@@ -2009,7 +2009,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
}
@Nullable
protected BackgroundBlurController getBackgroundBlurController() {
protected DepthController getDepthController() {
return null;
}
@@ -244,7 +244,7 @@ public abstract class BaseQuickstepLauncher extends Launcher
return new StateHandler[] {
getAllAppsController(),
getWorkspace(),
getBackgroundBlurController(),
getDepthController(),
new RecentsViewStateController(this),
new BackButtonAlphaHandler(this)};
}
@@ -33,7 +33,7 @@ import static com.android.launcher3.anim.Interpolators.EXAGGERATED_EASE;
import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.launcher3.config.FeatureFlags.KEYGUARD_ANIMATION;
import static com.android.launcher3.dragndrop.DragLayer.ALPHA_INDEX_TRANSITIONS;
import static com.android.launcher3.uioverrides.BackgroundBlurController.BACKGROUND_BLUR;
import static com.android.launcher3.uioverrides.DepthController.DEPTH;
import static com.android.launcher3.views.FloatingIconView.SHAPE_PROGRESS_DURATION;
import static com.android.quickstep.TaskUtils.taskIsATargetWithMode;
import static com.android.systemui.shared.system.QuickStepContract.getWindowCornerRadius;
@@ -73,7 +73,7 @@ import com.android.launcher3.anim.Interpolators;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.dragndrop.DragLayer;
import com.android.launcher3.shortcuts.DeepShortcutView;
import com.android.launcher3.uioverrides.BackgroundBlurController;
import com.android.launcher3.uioverrides.DepthController;
import com.android.launcher3.util.DynamicResource;
import com.android.launcher3.util.MultiValueAlpha;
import com.android.launcher3.util.MultiValueAlpha.AlphaProperty;
@@ -596,17 +596,17 @@ public abstract class QuickstepAppTransitionManagerImpl extends LauncherAppTrans
// When launching an app from overview that doesn't map to a task, we still want to just
// blur the wallpaper instead of the launcher surface as well
boolean allowBlurringLauncher = mLauncher.getStateManager().getState() != OVERVIEW;
BackgroundBlurController blurController = mLauncher.getBackgroundBlurController();
ObjectAnimator backgroundRadiusAnim = ObjectAnimator.ofInt(blurController, BACKGROUND_BLUR,
BACKGROUND_APP.getBackgroundBlurRadius(mLauncher))
DepthController depthController = mLauncher.getDepthController();
ObjectAnimator backgroundRadiusAnim = ObjectAnimator.ofFloat(depthController, DEPTH,
BACKGROUND_APP.getDepth(mLauncher))
.setDuration(APP_LAUNCH_DURATION);
if (allowBlurringLauncher) {
blurController.setSurfaceToApp(RemoteAnimationProvider.findLowestOpaqueLayerTarget(
depthController.setSurfaceToApp(RemoteAnimationProvider.findLowestOpaqueLayerTarget(
appTargets, MODE_OPENING));
backgroundRadiusAnim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
blurController.setSurfaceToLauncher(mLauncher.getDragLayer());
depthController.setSurfaceToLauncher(mLauncher.getDragLayer());
}
});
}
@@ -18,7 +18,8 @@ package com.android.launcher3.uioverrides;
import static com.android.launcher3.anim.Interpolators.LINEAR;
import android.util.IntProperty;
import android.os.IBinder;
import android.util.FloatProperty;
import android.view.View;
import com.android.launcher3.Launcher;
@@ -31,22 +32,23 @@ import com.android.launcher3.states.StateAnimationConfig;
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
import com.android.systemui.shared.system.SurfaceControlCompat;
import com.android.systemui.shared.system.TransactionCompat;
import com.android.systemui.shared.system.WallpaperManagerCompat;
/**
* Controls the blur, for the Launcher surface only.
* Controls blur and wallpaper zoom, for the Launcher surface only.
*/
public class BackgroundBlurController implements LauncherStateManager.StateHandler {
public class DepthController implements LauncherStateManager.StateHandler {
public static final IntProperty<BackgroundBlurController> BACKGROUND_BLUR =
new IntProperty<BackgroundBlurController>("backgroundBlur") {
public static final FloatProperty<DepthController> DEPTH =
new FloatProperty<DepthController>("depth") {
@Override
public void setValue(BackgroundBlurController blurController, int blurRadius) {
blurController.setBackgroundBlurRadius(blurRadius);
public void setValue(DepthController depthController, float depth) {
depthController.setDepth(depth);
}
@Override
public Integer get(BackgroundBlurController blurController) {
return blurController.mBackgroundBlurRadius;
public Float get(DepthController depthController) {
return depthController.mDepth;
}
};
@@ -54,42 +56,50 @@ public class BackgroundBlurController implements LauncherStateManager.StateHandl
* A property that updates the background blur within a given range of values (ie. even if the
* animator goes beyond 0..1, the interpolated value will still be bounded).
*/
public static class ClampedBlurProperty extends IntProperty<BackgroundBlurController> {
private final int mMinValue;
private final int mMaxValue;
public static class ClampedDepthProperty extends FloatProperty<DepthController> {
private final float mMinValue;
private final float mMaxValue;
public ClampedBlurProperty(int minValue, int maxValue) {
super(("backgroundBlurClamped"));
public ClampedDepthProperty(float minValue, float maxValue) {
super("depthClamped");
mMinValue = minValue;
mMaxValue = maxValue;
}
@Override
public void setValue(BackgroundBlurController blurController, int blurRadius) {
blurController.setBackgroundBlurRadius(Utilities.boundToRange(blurRadius,
mMinValue, mMaxValue));
public void setValue(DepthController depthController, float depth) {
depthController.setDepth(Utilities.boundToRange(depth, mMinValue, mMaxValue));
}
@Override
public Integer get(BackgroundBlurController blurController) {
return blurController.mBackgroundBlurRadius;
public Float get(DepthController depthController) {
return depthController.mDepth;
}
}
private final Launcher mLauncher;
/**
* Blur radius when completely zoomed out, in pixels.
*/
private int mMaxBlurRadius;
private WallpaperManagerCompat mWallpaperManager;
private SurfaceControlCompat mSurface;
private int mBackgroundBlurRadius;
/**
* Ratio from 0 to 1, where 0 is fully zoomed out, and 1 is zoomed in.
* @see android.service.wallpaper.WallpaperService.Engine#onZoomChanged(float)
*/
private float mDepth;
public BackgroundBlurController(Launcher l) {
public DepthController(Launcher l) {
mLauncher = l;
}
/**
* @return the background blur adjustment for folders
*/
public int getFolderBackgroundBlurAdjustment() {
return mLauncher.getResources().getInteger(
R.integer.folder_background_blur_radius_adjustment);
private void ensureDependencies() {
if (mWallpaperManager != null) {
return;
}
mMaxBlurRadius = mLauncher.getResources().getInteger(R.integer.max_depth_blur_radius);
mWallpaperManager = new WallpaperManagerCompat(mLauncher);
}
/**
@@ -112,10 +122,10 @@ public class BackgroundBlurController implements LauncherStateManager.StateHandl
if (mSurface != surface) {
mSurface = surface;
if (surface != null) {
setBackgroundBlurRadius(mBackgroundBlurRadius);
setDepth(mDepth);
} else {
// If there is no surface, then reset the blur radius
setBackgroundBlurRadius(0);
// If there is no surface, then reset the ratio
setDepth(0f);
}
}
}
@@ -126,9 +136,9 @@ public class BackgroundBlurController implements LauncherStateManager.StateHandl
return;
}
int toBackgroundBlurRadius = toState.getBackgroundBlurRadius(mLauncher);
if (mBackgroundBlurRadius != toBackgroundBlurRadius) {
setBackgroundBlurRadius(toBackgroundBlurRadius);
float toDepth = toState.getDepth(mLauncher);
if (Float.compare(mDepth, toDepth) != 0) {
setDepth(toDepth);
}
}
@@ -139,22 +149,24 @@ public class BackgroundBlurController implements LauncherStateManager.StateHandl
return;
}
int toBackgroundBlurRadius = toState.getBackgroundBlurRadius(mLauncher);
if (mBackgroundBlurRadius != toBackgroundBlurRadius) {
animation.setInt(this, BACKGROUND_BLUR, toBackgroundBlurRadius, LINEAR);
float toDepth = toState.getDepth(mLauncher);
if (Float.compare(mDepth, toDepth) != 0) {
animation.setFloat(this, DEPTH, toDepth, LINEAR);
}
}
private void setBackgroundBlurRadius(int blurRadius) {
// TODO: Do nothing if the shadows are not enabled
// Always update the background blur as it will be reapplied when a surface is next
// available
mBackgroundBlurRadius = blurRadius;
private void setDepth(float depth) {
mDepth = depth;
if (mSurface == null || !mSurface.isValid()) {
return;
}
ensureDependencies();
IBinder windowToken = mLauncher.getRootView().getWindowToken();
if (windowToken != null) {
mWallpaperManager.setWallpaperZoomOut(windowToken, mDepth);
}
new TransactionCompat()
.setBackgroundBlurRadius(mSurface, blurRadius)
.setBackgroundBlurRadius(mSurface, (int) (mDepth * mMaxBlurRadius))
.apply();
}
}
@@ -22,7 +22,6 @@ import android.content.Context;
import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherState;
import com.android.launcher3.R;
import com.android.launcher3.allapps.AllAppsContainerView;
import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
import com.android.quickstep.SysUINavigationMode;
@@ -88,8 +87,8 @@ public class AllAppsState extends LauncherState {
}
@Override
public int getBackgroundBlurRadius(Context context) {
return context.getResources().getInteger(R.integer.allapps_background_blur_radius);
public float getDepth(Context context) {
return 1f;
}
@Override
@@ -33,7 +33,7 @@ import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.anim.AnimatorPlaybackController;
import com.android.launcher3.touch.PagedOrientationHandler;
import com.android.launcher3.uioverrides.BackgroundBlurController;
import com.android.launcher3.uioverrides.DepthController;
import com.android.quickstep.util.ActivityInitListener;
import com.android.quickstep.util.ShelfPeekAnim;
import com.android.systemui.shared.recents.model.ThumbnailData;
@@ -81,7 +81,8 @@ public interface BaseActivityInterface<T extends BaseDraggingActivity> {
@Nullable
T getCreatedActivity();
default @Nullable BackgroundBlurController getBackgroundBlurController() {
@Nullable
default DepthController getDepthController() {
return null;
}
+8 -8
View File
@@ -124,7 +124,7 @@ import com.android.launcher3.testing.TestLogging;
import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.touch.AllAppsSwipeController;
import com.android.launcher3.touch.ItemClickHandler;
import com.android.launcher3.uioverrides.BackgroundBlurController;
import com.android.launcher3.uioverrides.DepthController;
import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper;
import com.android.launcher3.userevent.nano.LauncherLogProto.Action;
import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
@@ -326,14 +326,14 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
private boolean mDeferOverlayCallbacks;
private final Runnable mDeferredOverlayCallbacks = this::checkIfOverlayStillDeferred;
private BackgroundBlurController mBackgroundBlurController =
new BackgroundBlurController(this);
private DepthController mDepthController =
new DepthController(this);
private final ViewTreeObserver.OnDrawListener mOnDrawListener =
new ViewTreeObserver.OnDrawListener() {
@Override
public void onDraw() {
getBackgroundBlurController().setSurfaceToLauncher(mDragLayer);
getDepthController().setSurfaceToLauncher(mDragLayer);
mDragLayer.post(() -> mDragLayer.getViewTreeObserver().removeOnDrawListener(
this));
}
@@ -956,7 +956,7 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
NotificationListener.removeNotificationsChangedListener();
getStateManager().moveToRestState();
getBackgroundBlurController().setSurfaceToLauncher(null);
getDepthController().setSurfaceToLauncher(null);
// Workaround for b/78520668, explicitly trim memory once UI is hidden
onTrimMemory(TRIM_MEMORY_UI_HIDDEN);
@@ -2717,7 +2717,7 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
protected StateHandler[] createStateHandlers() {
return new StateHandler[] { getAllAppsController(), getWorkspace(),
getBackgroundBlurController() };
getDepthController() };
}
public TouchController[] createTouchControllers() {
@@ -2754,8 +2754,8 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
return Stream.of(APP_INFO, WIDGETS, INSTALL);
}
public BackgroundBlurController getBackgroundBlurController() {
return mBackgroundBlurController;
public DepthController getDepthController() {
return mDepthController;
}
public static Launcher getLauncher(Context context) {
+6 -4
View File
@@ -271,11 +271,13 @@ public abstract class LauncherState {
}
/**
* The amount of blur to apply to the background of either the app or Launcher surface in this
* state.
* The amount of blur and wallpaper zoom to apply to the background of either the app
* or Launcher surface in this state. Should be a number between 0 and 1, inclusive.
*
* 0 means completely zoomed in, without blurs. 1 is zoomed out, with blurs.
*/
public int getBackgroundBlurRadius(Context context) {
return 0;
public float getDepth(Context context) {
return 0f;
}
public String getDescription(Launcher launcher) {
@@ -21,7 +21,6 @@ import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY;
import static com.android.launcher3.folder.ClippedFolderIconLayoutRule.MAX_NUM_ITEMS_IN_PREVIEW;
import static com.android.launcher3.graphics.IconShape.getShape;
import static com.android.launcher3.icons.GraphicsUtils.setColorAlphaBound;
import static com.android.launcher3.uioverrides.BackgroundBlurController.BACKGROUND_BLUR;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
@@ -47,7 +46,6 @@ import com.android.launcher3.ShortcutAndWidgetContainer;
import com.android.launcher3.Utilities;
import com.android.launcher3.anim.PropertyResetListener;
import com.android.launcher3.dragndrop.DragLayer;
import com.android.launcher3.uioverrides.BackgroundBlurController;
import com.android.launcher3.util.Themes;
import java.util.List;
@@ -222,14 +220,6 @@ public class FolderAnimationManager {
Animator z = getAnimator(mFolder, View.TRANSLATION_Z, -mFolder.getElevation(), 0);
play(a, z, mIsOpening ? midDuration : 0, midDuration);
BackgroundBlurController blurController = mLauncher.getBackgroundBlurController();
int stateBackgroundBlur = mLauncher.getStateManager().getState()
.getBackgroundBlurRadius(mLauncher);
int folderBackgroundBlurAdjustment = blurController.getFolderBackgroundBlurAdjustment();
play(a, ObjectAnimator.ofInt(blurController, BACKGROUND_BLUR, mIsOpening
? stateBackgroundBlur + folderBackgroundBlurAdjustment
: stateBackgroundBlur));
// Store clip variables
CellLayout cellLayout = mContent.getCurrentCellLayout();
boolean folderClipChildren = mFolder.getClipChildren();
@@ -17,7 +17,7 @@
package com.android.launcher3.uioverrides;
import android.util.IntProperty;
import android.util.FloatProperty;
import android.view.View;
import com.android.launcher3.Launcher;
@@ -27,26 +27,22 @@ import com.android.launcher3.anim.PendingAnimation;
import com.android.launcher3.states.StateAnimationConfig;
/**
* Controls the blur, for the Launcher surface only.
* Controls blur and wallpaper zoom, for the Launcher surface only.
*/
public class BackgroundBlurController implements LauncherStateManager.StateHandler {
public class DepthController implements LauncherStateManager.StateHandler {
public static final IntProperty<BackgroundBlurController> BACKGROUND_BLUR =
new IntProperty<BackgroundBlurController>("backgroundBlur") {
public static final FloatProperty<DepthController> DEPTH =
new FloatProperty<DepthController>("depth") {
@Override
public void setValue(BackgroundBlurController blurController, int blurRadius) {}
public void setValue(DepthController depthController, float depth) {}
@Override
public Integer get(BackgroundBlurController blurController) {
return 0;
public Float get(DepthController depthController) {
return 0f;
}
};
public BackgroundBlurController(Launcher l) {}
public int getFolderBackgroundBlurAdjustment() {
return 0;
}
public DepthController(Launcher l) {}
public void setSurfaceToLauncher(View v) {}