Dark Notification Shade
Test: adb shell service call uimode 4 i32 1 # day
Test: adb shell service call uimode 4 i32 2 # night
Bug: 110758454
Change-Id: Ib6fce91d1aeff7e1fbfe8a7a528095487fbdb3f8
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 05bf6bf..67ed458 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -4473,9 +4473,9 @@
mTextColorsAreForBackground = backgroundColor;
if (!hasForegroundColor() || !isColorized()) {
mPrimaryTextColor = ContrastColorUtil.resolvePrimaryColor(mContext,
- backgroundColor);
+ backgroundColor, mInNightMode);
mSecondaryTextColor = ContrastColorUtil.resolveSecondaryColor(mContext,
- backgroundColor);
+ backgroundColor, mInNightMode);
if (backgroundColor != COLOR_DEFAULT && isColorized()) {
mPrimaryTextColor = ContrastColorUtil.findAlphaToMeetContrast(
mPrimaryTextColor, backgroundColor, 4.5);
@@ -5260,7 +5260,7 @@
// background color
background = outResultColor[0].getDefaultColor();
int textColor = ContrastColorUtil.resolvePrimaryColor(mContext,
- background);
+ background, mInNightMode);
button.setTextColor(R.id.action0, textColor);
rippleColor = textColor;
} else if (mN.color != COLOR_DEFAULT && !isColorized() && mTintActionButtons) {
@@ -5440,7 +5440,7 @@
com.android.internal.R.color.notification_material_background_color);
if (mN.color == COLOR_DEFAULT) {
ensureColors();
- color = ContrastColorUtil.resolveDefaultColor(mContext, background);
+ color = ContrastColorUtil.resolveDefaultColor(mContext, background, mInNightMode);
} else {
color = ContrastColorUtil.resolveContrastColor(mContext, mN.color,
background, mInNightMode);
@@ -5459,7 +5459,8 @@
}
int background = mContext.getColor(
com.android.internal.R.color.notification_material_background_color);
- mNeutralColor = ContrastColorUtil.resolveDefaultColor(mContext, background);
+ mNeutralColor = ContrastColorUtil.resolveDefaultColor(mContext, background,
+ mInNightMode);
if (Color.alpha(mNeutralColor) < 255) {
// alpha doesn't go well for color filters, so let's blend it manually
mNeutralColor = ContrastColorUtil.compositeColors(mNeutralColor, background);
@@ -7830,10 +7831,13 @@
// If the action buttons should not be tinted, then just use the default
// notification color. Otherwise, just use the passed-in color.
+ Configuration currentConfig = mBuilder.mContext.getResources().getConfiguration();
+ boolean inNightMode = (currentConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK)
+ == Configuration.UI_MODE_NIGHT_YES;
int tintColor = mBuilder.shouldTintActionButtons() || mBuilder.isColorized()
? color
: ContrastColorUtil.resolveColor(mBuilder.mContext,
- Notification.COLOR_DEFAULT);
+ Notification.COLOR_DEFAULT, inNightMode);
button.setDrawableTint(R.id.action0, false, tintColor,
PorterDuff.Mode.SRC_ATOP);