Loading packages/SystemUI/src/com/android/systemui/scrim/ScrimView.java +19 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. Loading @@ -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; Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +2 −0 Original line number Diff line number Diff line Loading @@ -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); Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java +13 −1 Original line number Diff line number Diff line Loading @@ -203,6 +203,11 @@ public enum ScrimState { public boolean isLowPowerState() { return true; } @Override public boolean shouldBlendWithMainColor() { return false; } }, /** Loading Loading @@ -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; } Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java +7 −0 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading
packages/SystemUI/src/com/android/systemui/scrim/ScrimView.java +19 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. Loading @@ -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; Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +2 −0 Original line number Diff line number Diff line Loading @@ -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); Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java +13 −1 Original line number Diff line number Diff line Loading @@ -203,6 +203,11 @@ public enum ScrimState { public boolean isLowPowerState() { return true; } @Override public boolean shouldBlendWithMainColor() { return false; } }, /** Loading Loading @@ -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; } Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java +7 −0 Original line number Diff line number Diff line Loading @@ -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(); Loading