Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f475ccdc authored by Rahul Banerjee's avatar Rahul Banerjee
Browse files

SysUI Notification Shade Blur.

Bug: 370555223
Flag: com.android.systemui.notification_shade_blur
Test: verified manually by pulling shade down and collapsing.

Change-Id: I96bcc51384ca60cb8f889ff46a9493f00d6686a7
parent 2e9c7e8c
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1224,6 +1224,9 @@
    <dimen name="min_window_blur_radius">1px</dimen>
    <dimen name="max_window_blur_radius">23px</dimen>

    <!-- Blur radius behind Notification Shade -->
    <dimen name="max_shade_window_blur_radius">60dp</dimen>

    <!-- How much into a DisplayCutout's bounds we can go, on each side -->
    <dimen name="display_cutout_margin_consumption">0px</dimen>

+5 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import android.view.animation.DecelerateInterpolator;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.graphics.ColorUtils;
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
import static com.android.systemui.Flags.notificationShadeBlur;

/**
 * Drawable used on SysUI scrims.
@@ -213,6 +214,10 @@ public class ScrimDrawable extends Drawable {
    public void draw(@NonNull Canvas canvas) {
        mPaint.setColor(mMainColor);
        mPaint.setAlpha(mAlpha);
        if (notificationShadeBlur()) {
            // TODO(b/370555223): Match the alpha to the visual spec when it is finalized.
            mPaint.setAlpha((int) (0.5f * mAlpha));
        }
        if (mConcaveInfo != null) {
            drawConcave(canvas);
        } else if (mCornerRadiusEnabled && mCornerRadius > 0) {
+6 −0
Original line number Diff line number Diff line
@@ -44,6 +44,8 @@ import com.android.systemui.util.LargeScreenUtils;

import java.util.concurrent.Executor;

import static com.android.systemui.Flags.notificationShadeBlur;

/**
 * A view which can draw a scrim.  This view maybe be used in multiple windows running on different
 * threads, but is controlled by {@link com.android.systemui.statusbar.phone.ScrimController} so we
@@ -250,6 +252,10 @@ public class ScrimView extends View {
            if (mBlendWithMainColor) {
                mainTinted = ColorUtils.blendARGB(mColors.getMainColor(), mTintColor, tintAmount);
            }
            if (notificationShadeBlur()) {
                // TODO(b/370555223): Fix color and transparency to match visual spec exactly
                mainTinted = ColorUtils.blendARGB(mColors.getMainColor(), Color.GRAY, 0.5f);
            }
            drawable.setColor(mainTinted, animated);
        } else {
            boolean hasAlpha = Color.alpha(mTintColor) != 0;
+9 −1
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
import java.io.PrintWriter
import javax.inject.Inject
import com.android.systemui.Flags.notificationShadeBlur

@SysUISingleton
open class BlurUtils @Inject constructor(
@@ -43,7 +44,14 @@ open class BlurUtils @Inject constructor(
    dumpManager: DumpManager
) : Dumpable {
    val minBlurRadius = resources.getDimensionPixelSize(R.dimen.min_window_blur_radius)
    val maxBlurRadius = resources.getDimensionPixelSize(R.dimen.max_window_blur_radius)
    val maxBlurRadius =
        if (notificationShadeBlur()) {
            resources.getDimensionPixelSize(R.dimen.max_shade_window_blur_radius)
        } else {
            resources.getDimensionPixelSize(R.dimen.max_window_blur_radius)
        }


    private var lastAppliedBlur = 0
    private var earlyWakeupEnabled = false

+5 −2
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ import java.io.PrintWriter
import javax.inject.Inject
import kotlin.math.max
import kotlin.math.sign
import com.android.systemui.Flags.notificationShadeBlur

/**
 * Responsible for blurring the notification shade window, and applying a zoom effect to the
@@ -220,7 +221,9 @@ constructor(

        // Make blur be 0 if it is necessary to stop blur effect.
        if (scrimsVisible) {
            if (!notificationShadeBlur()) {
                blur = 0
            }
            zoomOut = 0f
        }

@@ -240,7 +243,7 @@ constructor(
        Choreographer.FrameCallback {
            updateScheduled = false
            val (blur, zoomOut) = computeBlurAndZoomOut()
            val opaque = scrimsVisible && !blursDisabledForAppLaunch
            val opaque = if (notificationShadeBlur()) false else scrimsVisible && !blursDisabledForAppLaunch
            Trace.traceCounter(Trace.TRACE_TAG_APP, "shade_blur_radius", blur)
            blurUtils.applyBlur(root.viewRootImpl, blur, opaque)
            lastAppliedBlur = blur