Merge "Add wallpaper zoom to areas that have blur" into ub-launcher3-master
This commit is contained in:
@@ -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>
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+2
-3
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -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
|
||||
|
||||
+13
-13
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
+12
-13
@@ -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);
|
||||
|
||||
+4
-4
@@ -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());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+54
-42
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
+9
-13
@@ -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) {}
|
||||
|
||||
Reference in New Issue
Block a user