Merge "Decouple zooms and blurs on app launch" into sc-dev

This commit is contained in:
Lucas Dupin
2021-06-30 00:11:01 +00:00
committed by Android (Google) Code Review
3 changed files with 26 additions and 7 deletions

View File

@@ -981,11 +981,14 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
depthController.setSurface(dimLayer);
backgroundRadiusAnim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
depthController.setIsInLaunchTransition(true);
}
@Override
public void onAnimationEnd(Animator animation) {
// Reset depth at the end of the launch animation, so the wallpaper won't be
// zoomed out if an app crashes.
DEPTH.setValue(depthController, 0f);
depthController.setIsInLaunchTransition(false);
depthController.setSurface(null);
if (dimLayer != null) {
new SurfaceControl.Transaction()

View File

@@ -24,6 +24,7 @@ import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.os.IBinder;
import android.os.SystemProperties;
import android.util.FloatProperty;
import android.view.CrossWindowBlurListeners;
import android.view.SurfaceControl;
@@ -117,6 +118,10 @@ public class DepthController implements StateHandler<LauncherState>,
* @see android.service.wallpaper.WallpaperService.Engine#onZoomChanged(float)
*/
private float mDepth;
/**
* If we're launching and app and should not be blurring the screen for performance reasons.
*/
private boolean mBlurDisabledForAppLaunch;
// Workaround for animating the depth when multiwindow mode changes.
private boolean mIgnoreStateChangesDuringMultiWindowAnimation = false;
@@ -211,6 +216,19 @@ public class DepthController implements StateHandler<LauncherState>,
}
}
/**
* If we're launching an app from the home screen.
*/
public void setIsInLaunchTransition(boolean inLaunchTransition) {
boolean blurEnabled = SystemProperties.getBoolean("ro.launcher.blur.appLaunch", true);
mBlurDisabledForAppLaunch = inLaunchTransition && !blurEnabled;
if (!inLaunchTransition) {
// Reset depth at the end of the launch animation, so the wallpaper won't be
// zoomed out if an app crashes.
setDepth(0f);
}
}
private void setDepth(float depth) {
depth = Utilities.boundToRange(depth, 0, 1);
// Round out the depth to dedupe frequent, non-perceptable updates
@@ -238,7 +256,7 @@ public class DepthController implements StateHandler<LauncherState>,
boolean opaque = mLauncher.getScrimView().isFullyOpaque() && !isOverview;
int blur = opaque || isOverview || !mCrossWindowBlursEnabled
? 0 : (int) (mDepth * mMaxBlurRadius);
|| mBlurDisabledForAppLaunch ? 0 : (int) (mDepth * mMaxBlurRadius);
new SurfaceControl.Transaction()
.setBackgroundBlurRadius(mSurface, blur)
.setOpaque(mSurface, opaque)

View File

@@ -19,7 +19,6 @@ import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKG
import android.content.Context;
import android.graphics.Color;
import android.os.SystemProperties;
import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.DeviceProfile;
@@ -85,8 +84,7 @@ public class BackgroundAppState extends OverviewState {
@Override
protected float getDepthUnchecked(Context context) {
//TODO revert when b/178661709 is fixed
return SystemProperties.getBoolean("ro.launcher.depth.appLaunch", true) ? 1 : 0;
return 1;
}
@Override