Merge "Make launcher opaque when scrim becomes opaque" into sc-dev
diff --git a/quickstep/src/com/android/launcher3/statehandlers/DepthController.java b/quickstep/src/com/android/launcher3/statehandlers/DepthController.java
index 59d0afa..e608885 100644
--- a/quickstep/src/com/android/launcher3/statehandlers/DepthController.java
+++ b/quickstep/src/com/android/launcher3/statehandlers/DepthController.java
@@ -217,17 +217,11 @@
}
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 0ba94ab..fb1485b 100644
--- a/src/com/android/launcher3/views/ScrimView.java
+++ b/src/com/android/launcher3/views/ScrimView.java
@@ -19,6 +19,7 @@
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 @@
private SystemUiController mSystemUiController;
private ScrimDrawingController mDrawingController;
+ private int mBackgroundColor;
+ private boolean mIsVisible = true;
public ScrimView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -62,11 +65,22 @@
@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);
if (mDrawingController != null) {