diff --git a/quickstep/src/com/android/launcher3/statehandlers/DepthController.java b/quickstep/src/com/android/launcher3/statehandlers/DepthController.java index 59d0afa47f..e608885491 100644 --- a/quickstep/src/com/android/launcher3/statehandlers/DepthController.java +++ b/quickstep/src/com/android/launcher3/statehandlers/DepthController.java @@ -217,17 +217,11 @@ public class DepthController implements StateHandler, } if (supportsBlur) { - final int blur; - if (mLauncher.isInState(LauncherState.ALL_APPS) && mDepth == 1) { - // All apps has a solid background. We don't need to draw blurs after it's fully - // visible. This will take us out of GPU composition, saving battery and increasing - // performance. - blur = 0; - } else { - blur = (int) (mDepth * mMaxBlurRadius); - } + boolean isOpaque = mLauncher.getScrimView().isFullyOpaque(); + int blur = isOpaque ? 0 : (int) (mDepth * mMaxBlurRadius); new TransactionCompat() .setBackgroundBlurRadius(mSurface, blur) + .setOpaque(mSurface, isOpaque) .apply(); } } diff --git a/src/com/android/launcher3/views/ScrimView.java b/src/com/android/launcher3/views/ScrimView.java index 0ba94ab240..fb1485b480 100644 --- a/src/com/android/launcher3/views/ScrimView.java +++ b/src/com/android/launcher3/views/ScrimView.java @@ -19,6 +19,7 @@ import static com.android.launcher3.util.SystemUiController.UI_STATE_SCRIM_VIEW; import android.content.Context; import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.Rect; import android.graphics.drawable.ColorDrawable; import android.util.AttributeSet; @@ -39,6 +40,8 @@ public class ScrimView extends View implements Insettable { private SystemUiController mSystemUiController; private ScrimDrawingController mDrawingController; + private int mBackgroundColor; + private boolean mIsVisible = true; public ScrimView(Context context, AttributeSet attrs) { super(context, attrs); @@ -62,10 +65,21 @@ public class ScrimView extends View implements Insettable { @Override public void setBackgroundColor(int color) { + mBackgroundColor = color; updateSysUiColors(); super.setBackgroundColor(color); } + @Override + public void onVisibilityAggregated(boolean isVisible) { + super.onVisibilityAggregated(isVisible); + mIsVisible = isVisible; + } + + public boolean isFullyOpaque() { + return mIsVisible && getAlpha() == 1 && Color.alpha(mBackgroundColor) == 255; + } + @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas);