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

Commit dc65d350 authored by Matt Pietal's avatar Matt Pietal Committed by Android (Google) Code Review
Browse files

Merge "Don't blend front scrim on AOD" into tm-dev

parents ce0daea7 c60ff20e
Loading
Loading
Loading
Loading
+19 −2
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ public class ScrimView extends View {
    private Drawable mDrawable;
    private PorterDuffColorFilter mColorFilter;
    private int mTintColor;
    private boolean mBlendWithMainColor = true;
    private Runnable mChangeRunnable;
    private Executor mChangeRunnableExecutor;
    private Executor mExecutor;
@@ -191,6 +192,19 @@ public class ScrimView extends View {
        setTint(color, false);
    }

    /**
     * The call to {@link #setTint} will blend with the main color, with the amount
     * determined by the alpha of the tint. Set to false to avoid this blend.
     */
    public void setBlendWithMainColor(boolean blend) {
        mBlendWithMainColor = blend;
    }

    /** @return true if blending tint color with main color */
    public boolean shouldBlendWithMainColor() {
        return mBlendWithMainColor;
    }

    /**
     * Tints this view, optionally animating it.
     * @param color The color.
@@ -211,8 +225,11 @@ public class ScrimView extends View {
            // Optimization to blend colors and avoid a color filter
            ScrimDrawable drawable = (ScrimDrawable) mDrawable;
            float tintAmount = Color.alpha(mTintColor) / 255f;
            int mainTinted = ColorUtils.blendARGB(mColors.getMainColor(), mTintColor,
                    tintAmount);

            int mainTinted = mTintColor;
            if (mBlendWithMainColor) {
                mainTinted = ColorUtils.blendARGB(mColors.getMainColor(), mTintColor, tintAmount);
            }
            drawable.setColor(mainTinted, animated);
        } else {
            boolean hasAlpha = Color.alpha(mTintColor) != 0;
+2 −0
Original line number Diff line number Diff line
@@ -402,6 +402,8 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
        mScrimBehind.setFocusable(!state.isLowPowerState());
        mNotificationsScrim.setFocusable(!state.isLowPowerState());

        mScrimInFront.setBlendWithMainColor(state.shouldBlendWithMainColor());

        // Cancel blanking transitions that were pending before we requested a new state
        if (mPendingFrameCallback != null) {
            mScrimBehind.removeCallbacks(mPendingFrameCallback);
+13 −1
Original line number Diff line number Diff line
@@ -203,6 +203,11 @@ public enum ScrimState {
        public boolean isLowPowerState() {
            return true;
        }

        @Override
        public boolean shouldBlendWithMainColor() {
            return false;
        }
    },

    /**
@@ -325,6 +330,13 @@ public enum ScrimState {
    public void prepare(ScrimState previousState) {
    }

    /**
     * Whether a particular state should enable blending with extracted theme colors.
     */
    public boolean shouldBlendWithMainColor() {
        return true;
    }

    public float getFrontAlpha() {
        return mFrontAlpha;
    }
+7 −0
Original line number Diff line number Diff line
@@ -1490,6 +1490,13 @@ public class ScrimControllerTest extends SysuiTestCase {
        assertAlphaAfterExpansion(mNotificationsScrim, 0f, expansion);
    }

    @Test
    public void aodStateSetsFrontScrimToNotBlend() {
        mScrimController.transitionTo(ScrimState.AOD);
        Assert.assertFalse("Front scrim should not blend with main color",
                mScrimInFront.shouldBlendWithMainColor());
    }

    private void assertAlphaAfterExpansion(ScrimView scrim, float expectedAlpha, float expansion) {
        mScrimController.setRawPanelExpansionFraction(expansion);
        finishAnimationsImmediately();