Merge "Don't blend front scrim on AOD" into tm-dev
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -422,4 +434,4 @@ public enum ScrimState {
|
||||
public void setClipQsScrim(boolean clipsQsScrim) {
|
||||
mClipQsScrim = clipsQsScrim;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user