Merge "Updated the styling for notifications" into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
51856fde2b
@@ -3118,7 +3118,6 @@ public class Notification implements Parcelable
|
||||
private int mActionBarColor = COLOR_INVALID;
|
||||
private int mBackgroundColor = COLOR_INVALID;
|
||||
private int mForegroundColor = COLOR_INVALID;
|
||||
private int mBackgroundColorHint = COLOR_INVALID;
|
||||
/**
|
||||
* A temporary location where actions are stored. If != null the view originally has action
|
||||
* but doesn't have any for this inflation.
|
||||
@@ -4387,8 +4386,7 @@ public class Notification implements Parcelable
|
||||
backgroundColor);
|
||||
mSecondaryTextColor = NotificationColorUtil.resolveSecondaryColor(mContext,
|
||||
backgroundColor);
|
||||
if (backgroundColor != COLOR_DEFAULT
|
||||
&& (mBackgroundColorHint != COLOR_INVALID || isColorized())) {
|
||||
if (backgroundColor != COLOR_DEFAULT && isColorized()) {
|
||||
mPrimaryTextColor = NotificationColorUtil.findAlphaToMeetContrast(
|
||||
mPrimaryTextColor, backgroundColor, 4.5);
|
||||
mSecondaryTextColor = NotificationColorUtil.findAlphaToMeetContrast(
|
||||
@@ -4595,21 +4593,13 @@ public class Notification implements Parcelable
|
||||
}
|
||||
|
||||
private void bindExpandButton(RemoteViews contentView) {
|
||||
int color = getPrimaryHighlightColor();
|
||||
int color = isColorized() ? getPrimaryTextColor() : getSecondaryTextColor();
|
||||
contentView.setDrawableTint(R.id.expand_button, false, color,
|
||||
PorterDuff.Mode.SRC_ATOP);
|
||||
contentView.setInt(R.id.notification_header, "setOriginalNotificationColor",
|
||||
color);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the color that is used as the first primary highlight color. This is applied
|
||||
* in several places like the action buttons or the app name in the header.
|
||||
*/
|
||||
private int getPrimaryHighlightColor() {
|
||||
return isColorized() ? getPrimaryTextColor() : resolveContrastColor();
|
||||
}
|
||||
|
||||
private void bindHeaderChronometerAndTime(RemoteViews contentView) {
|
||||
if (showsTimeOrChronometer()) {
|
||||
contentView.setViewVisibility(R.id.time_divider, View.VISIBLE);
|
||||
@@ -4706,7 +4696,7 @@ public class Notification implements Parcelable
|
||||
setTextViewColorPrimary(contentView, R.id.app_name_text);
|
||||
} else {
|
||||
contentView.setTextColor(R.id.app_name_text,
|
||||
ambient ? resolveAmbientColor() : resolveContrastColor());
|
||||
ambient ? resolveAmbientColor() : getSecondaryTextColor());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5234,7 +5224,14 @@ public class Notification implements Parcelable
|
||||
private void processSmallIconColor(Icon smallIcon, RemoteViews contentView,
|
||||
boolean ambient) {
|
||||
boolean colorable = !isLegacy() || getColorUtil().isGrayscaleIcon(mContext, smallIcon);
|
||||
int color = ambient ? resolveAmbientColor() : getPrimaryHighlightColor();
|
||||
int color;
|
||||
if (ambient) {
|
||||
color = resolveAmbientColor();
|
||||
} else if (isColorized()) {
|
||||
color = getPrimaryTextColor();
|
||||
} else {
|
||||
color = resolveContrastColor();
|
||||
}
|
||||
if (colorable) {
|
||||
contentView.setDrawableTint(R.id.icon, false, color,
|
||||
PorterDuff.Mode.SRC_ATOP);
|
||||
@@ -5270,14 +5267,11 @@ public class Notification implements Parcelable
|
||||
}
|
||||
|
||||
int color;
|
||||
int background = mBackgroundColorHint;
|
||||
if (mBackgroundColorHint == COLOR_INVALID) {
|
||||
background = mContext.getColor(
|
||||
com.android.internal.R.color.notification_material_background_color);
|
||||
}
|
||||
int background = mContext.getColor(
|
||||
com.android.internal.R.color.notification_material_background_color);
|
||||
if (mN.color == COLOR_DEFAULT) {
|
||||
ensureColors();
|
||||
color = mSecondaryTextColor;
|
||||
color = NotificationColorUtil.resolveDefaultColor(mContext, background);
|
||||
} else {
|
||||
color = NotificationColorUtil.resolveContrastColor(mContext, mN.color,
|
||||
background, mInNightMode);
|
||||
@@ -5517,8 +5511,7 @@ public class Notification implements Parcelable
|
||||
if (isColorized()) {
|
||||
return mBackgroundColor != COLOR_INVALID ? mBackgroundColor : mN.color;
|
||||
} else {
|
||||
return mBackgroundColorHint != COLOR_INVALID ? mBackgroundColorHint
|
||||
: COLOR_DEFAULT;
|
||||
return COLOR_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5554,18 +5547,6 @@ public class Notification implements Parcelable
|
||||
ensureColors();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the background color for this notification to be a different one then the default.
|
||||
* This is mainly used to calculate contrast and won't necessarily be applied to the
|
||||
* background.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public void setBackgroundColorHint(int backgroundColor) {
|
||||
mBackgroundColorHint = backgroundColor;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Forces all styled remoteViews to be built from scratch and not use any cached
|
||||
* RemoteViews.
|
||||
@@ -5972,7 +5953,7 @@ public class Notification implements Parcelable
|
||||
* @hide
|
||||
*/
|
||||
public abstract boolean areNotificationsVisiblyDifferent(Style other);
|
||||
|
||||
|
||||
/**
|
||||
* @return the the text that should be displayed in the statusBar when heads-upped.
|
||||
* If {@code null} is returned, the default implementation will be used.
|
||||
@@ -7498,8 +7479,7 @@ public class Notification implements Parcelable
|
||||
}
|
||||
|
||||
final Action action = mBuilder.mActions.get(mActionsToShowInCompact[i]);
|
||||
final RemoteViews button = generateMediaActionButton(action,
|
||||
getPrimaryHighlightColor());
|
||||
final RemoteViews button = generateMediaActionButton(action, getActionColor());
|
||||
view.addView(com.android.internal.R.id.media_actions, button);
|
||||
}
|
||||
}
|
||||
@@ -7513,8 +7493,9 @@ public class Notification implements Parcelable
|
||||
return view;
|
||||
}
|
||||
|
||||
private int getPrimaryHighlightColor() {
|
||||
return mBuilder.getPrimaryHighlightColor();
|
||||
private int getActionColor() {
|
||||
return mBuilder.isColorized() ? mBuilder.getPrimaryTextColor()
|
||||
: mBuilder.resolveContrastColor();
|
||||
}
|
||||
|
||||
private RemoteViews makeMediaBigContentView() {
|
||||
@@ -7534,7 +7515,7 @@ public class Notification implements Parcelable
|
||||
big.removeAllViews(com.android.internal.R.id.media_actions);
|
||||
for (int i = 0; i < actionCount; i++) {
|
||||
final RemoteViews button = generateMediaActionButton(mBuilder.mActions.get(i),
|
||||
getPrimaryHighlightColor());
|
||||
getActionColor());
|
||||
big.addView(com.android.internal.R.id.media_actions, button);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -443,7 +443,7 @@ public class NotificationColorUtil {
|
||||
*/
|
||||
public static int resolveColor(Context context, int color) {
|
||||
if (color == Notification.COLOR_DEFAULT) {
|
||||
return context.getColor(com.android.internal.R.color.notification_icon_default_color);
|
||||
return context.getColor(com.android.internal.R.color.notification_default_color_light);
|
||||
}
|
||||
return color;
|
||||
}
|
||||
@@ -475,20 +475,15 @@ public class NotificationColorUtil {
|
||||
int backgroundColor, boolean isDark) {
|
||||
final int resolvedColor = resolveColor(context, notificationColor);
|
||||
|
||||
final int actionBg = context.getColor(
|
||||
com.android.internal.R.color.notification_action_list);
|
||||
|
||||
int color = resolvedColor;
|
||||
color = NotificationColorUtil.ensureLargeTextContrast(color, actionBg, isDark);
|
||||
color = NotificationColorUtil.ensureTextContrast(color, backgroundColor, isDark);
|
||||
|
||||
if (color != resolvedColor) {
|
||||
if (DEBUG){
|
||||
Log.w(TAG, String.format(
|
||||
"Enhanced contrast of notification for %s %s (over action)"
|
||||
"Enhanced contrast of notification for %s"
|
||||
+ " and %s (over background) by changing #%s to %s",
|
||||
context.getPackageName(),
|
||||
NotificationColorUtil.contrastChange(resolvedColor, color, actionBg),
|
||||
NotificationColorUtil.contrastChange(resolvedColor, color, backgroundColor),
|
||||
Integer.toHexString(resolvedColor), Integer.toHexString(color)));
|
||||
}
|
||||
@@ -552,6 +547,17 @@ public class NotificationColorUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static int resolveDefaultColor(Context context, int backgroundColor) {
|
||||
boolean useDark = shouldUseDark(backgroundColor);
|
||||
if (useDark) {
|
||||
return context.getColor(
|
||||
com.android.internal.R.color.notification_default_color_light);
|
||||
} else {
|
||||
return context.getColor(
|
||||
com.android.internal.R.color.notification_default_color_dark);
|
||||
}
|
||||
}
|
||||
|
||||
public static int resolveActionBarColor(Context context, int backgroundColor) {
|
||||
if (backgroundColor == Notification.COLOR_DEFAULT) {
|
||||
return context.getColor(com.android.internal.R.color.notification_action_list);
|
||||
|
||||
@@ -130,13 +130,14 @@
|
||||
<drawable name="notification_template_divider_media">#29ffffff</drawable>
|
||||
<color name="notification_primary_text_color_light">@color/primary_text_default_material_light</color>
|
||||
<color name="notification_primary_text_color_dark">@color/primary_text_default_material_dark</color>
|
||||
<color name="notification_secondary_text_color_light">@color/secondary_text_material_light</color>
|
||||
<color name="notification_secondary_text_color_dark">@color/secondary_text_material_dark</color>
|
||||
<color name="notification_secondary_text_color_light">@color/primary_text_default_material_light</color>
|
||||
<color name="notification_secondary_text_color_dark">@color/primary_text_default_material_dark</color>
|
||||
<color name="notification_default_color_dark">@color/primary_text_default_material_light</color>
|
||||
<color name="notification_default_color_light">#a3202124</color>
|
||||
|
||||
<color name="notification_material_background_color">#ffffffff</color>
|
||||
|
||||
<color name="notification_default_color">#757575</color> <!-- Gray 600 -->
|
||||
<color name="notification_icon_default_color">@color/notification_default_color</color>
|
||||
|
||||
<color name="notification_progress_background_color">@color/secondary_text_material_light</color>
|
||||
|
||||
|
||||
@@ -473,7 +473,7 @@ please see styles_device_defaults.xml.
|
||||
<style name="TextAppearance.Material.Notification.Reply" />
|
||||
|
||||
<style name="TextAppearance.Material.Notification.Title">
|
||||
<item name="textColor">@color/notification_primary_text_color_light</item>
|
||||
<item name="fontFamily">sans-serif-medium</item>
|
||||
<item name="textSize">@dimen/notification_title_text_size</item>
|
||||
</style>
|
||||
|
||||
@@ -482,7 +482,6 @@ please see styles_device_defaults.xml.
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.Material.Notification.Info">
|
||||
<item name="textColor">@color/notification_secondary_text_color_light</item>
|
||||
<item name="textSize">@dimen/notification_subtext_size</item>
|
||||
</style>
|
||||
|
||||
|
||||
@@ -2117,7 +2117,6 @@
|
||||
<java-symbol type="layout" name="notification_template_material_big_text" />
|
||||
<java-symbol type="layout" name="notification_template_header" />
|
||||
<java-symbol type="layout" name="notification_material_media_action" />
|
||||
<java-symbol type="color" name="notification_icon_default_color" />
|
||||
<java-symbol type="color" name="notification_progress_background_color" />
|
||||
<java-symbol type="id" name="media_actions" />
|
||||
|
||||
@@ -2967,6 +2966,8 @@
|
||||
<java-symbol type="color" name="notification_primary_text_color_dark" />
|
||||
<java-symbol type="color" name="notification_secondary_text_color_light" />
|
||||
<java-symbol type="color" name="notification_secondary_text_color_dark" />
|
||||
<java-symbol type="color" name="notification_default_color_light" />
|
||||
<java-symbol type="color" name="notification_default_color_dark" />
|
||||
|
||||
<java-symbol type="string" name="app_category_game" />
|
||||
<java-symbol type="string" name="app_category_audio" />
|
||||
|
||||
@@ -79,9 +79,6 @@
|
||||
<!-- The color of the material notification background when dark -->
|
||||
<color name="notification_material_background_dark_color">#ff333333</color>
|
||||
|
||||
<!-- The color of the material notification background when low priority -->
|
||||
<color name="notification_material_background_low_priority_color">#fff5f5f5</color>
|
||||
|
||||
<!-- The color of the dividing line between grouped notifications. -->
|
||||
<color name="notification_divider_color">#FF616161</color>
|
||||
|
||||
@@ -91,9 +88,6 @@
|
||||
<!-- The color of the ripples on the untinted notifications -->
|
||||
<color name="notification_ripple_untinted_color">#28000000</color>
|
||||
|
||||
<!-- The color of the ripples on the low priority notifications -->
|
||||
<color name="notification_ripple_color_low_priority">#30000000</color>
|
||||
|
||||
<!-- The color of the ripples on the tinted notifications -->
|
||||
<color name="notification_ripple_tinted_color">#30ffffff</color>
|
||||
|
||||
|
||||
@@ -99,7 +99,6 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
|
||||
private static final Interpolator ACTIVATE_INVERSE_ALPHA_INTERPOLATOR
|
||||
= new PathInterpolator(0, 0, 0.5f, 1);
|
||||
private final int mTintedRippleColor;
|
||||
private final int mLowPriorityRippleColor;
|
||||
protected final int mNormalRippleColor;
|
||||
private final AccessibilityManager mAccessibilityManager;
|
||||
private final DoubleTapHelper mDoubleTapHelper;
|
||||
@@ -134,7 +133,6 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
|
||||
private float mAppearAnimationFraction = -1.0f;
|
||||
private float mAppearAnimationTranslation;
|
||||
private final int mNormalColor;
|
||||
private final int mLowPriorityColor;
|
||||
private boolean mIsBelowSpeedBump;
|
||||
private FalsingManager mFalsingManager;
|
||||
|
||||
@@ -191,12 +189,8 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
|
||||
setClipChildren(false);
|
||||
setClipToPadding(false);
|
||||
mNormalColor = context.getColor(R.color.notification_material_background_color);
|
||||
mLowPriorityColor = context.getColor(
|
||||
R.color.notification_material_background_low_priority_color);
|
||||
mTintedRippleColor = context.getColor(
|
||||
R.color.notification_ripple_tinted_color);
|
||||
mLowPriorityRippleColor = context.getColor(
|
||||
R.color.notification_ripple_color_low_priority);
|
||||
mNormalRippleColor = context.getColor(
|
||||
R.color.notification_ripple_untinted_color);
|
||||
mFalsingManager = FalsingManager.getInstance(context);
|
||||
@@ -997,8 +991,6 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
|
||||
}
|
||||
if (withTint && mBgTint != NO_COLOR) {
|
||||
return mBgTint;
|
||||
} else if (mIsBelowSpeedBump) {
|
||||
return mLowPriorityColor;
|
||||
} else {
|
||||
return mNormalColor;
|
||||
}
|
||||
@@ -1007,8 +999,6 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
|
||||
protected int getRippleColor() {
|
||||
if (mBgTint != 0) {
|
||||
return mTintedRippleColor;
|
||||
} else if (mIsBelowSpeedBump) {
|
||||
return mLowPriorityRippleColor;
|
||||
} else {
|
||||
return mNormalRippleColor;
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ public class NotificationHeaderUtil {
|
||||
if (shouldApply) {
|
||||
// lets gray it out
|
||||
int grey = view.getContext().getColor(
|
||||
com.android.internal.R.color.notification_icon_default_color);
|
||||
com.android.internal.R.color.notification_default_color_light);
|
||||
imageView.getDrawable().setColorFilter(grey, PorterDuff.Mode.SRC_ATOP);
|
||||
} else {
|
||||
// lets reset it
|
||||
|
||||
@@ -165,7 +165,7 @@ public class StatusBarIconView extends AnimatedImageView {
|
||||
mDensity = context.getResources().getDisplayMetrics().densityDpi;
|
||||
if (mNotification != null) {
|
||||
setDecorColor(getContext().getColor(
|
||||
com.android.internal.R.color.notification_icon_default_color));
|
||||
com.android.internal.R.color.notification_default_color_light));
|
||||
}
|
||||
reloadDimens();
|
||||
}
|
||||
|
||||
@@ -76,7 +76,6 @@ public class MediaNotificationProcessor {
|
||||
* notification.
|
||||
*/
|
||||
private final Context mPackageContext;
|
||||
private boolean mIsLowPriority;
|
||||
|
||||
public MediaNotificationProcessor(Context context, Context packageContext) {
|
||||
this(context, packageContext, new ImageGradientColorizer());
|
||||
@@ -146,10 +145,7 @@ public class MediaNotificationProcessor {
|
||||
int foregroundColor = selectForegroundColor(backgroundColor, palette);
|
||||
builder.setColorPalette(backgroundColor, foregroundColor);
|
||||
} else {
|
||||
int id = mIsLowPriority
|
||||
? R.color.notification_material_background_low_priority_color
|
||||
: R.color.notification_material_background_color;
|
||||
backgroundColor = mContext.getColor(id);
|
||||
backgroundColor = mContext.getColor(R.color.notification_material_background_color);
|
||||
}
|
||||
Bitmap colorized = mColorizer.colorize(drawable, backgroundColor,
|
||||
mContext.getResources().getConfiguration().getLayoutDirection() ==
|
||||
@@ -307,8 +303,4 @@ public class MediaNotificationProcessor {
|
||||
private boolean isWhite(float[] hslColor) {
|
||||
return hslColor[2] >= WHITE_MIN_LIGHTNESS;
|
||||
}
|
||||
|
||||
public void setIsLowPriority(boolean isLowPriority) {
|
||||
mIsLowPriority = isLowPriority;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,9 +122,9 @@ public class NotificationHeaderViewWrapper extends NotificationViewWrapper {
|
||||
mHeaderText = mView.findViewById(com.android.internal.R.id.header_text);
|
||||
mExpandButton = mView.findViewById(com.android.internal.R.id.expand_button);
|
||||
mWorkProfileImage = mView.findViewById(com.android.internal.R.id.profile_badge);
|
||||
mColor = resolveColor(mExpandButton);
|
||||
mNotificationHeader = mView.findViewById(com.android.internal.R.id.notification_header);
|
||||
mNotificationHeader.setShowExpandButtonAtEnd(mShowExpandButtonAtEnd);
|
||||
mColor = mNotificationHeader.getOriginalIconColor();
|
||||
getDozer().setColor(mColor);
|
||||
}
|
||||
|
||||
@@ -132,16 +132,6 @@ public class NotificationHeaderViewWrapper extends NotificationViewWrapper {
|
||||
mNotificationHeader.setAppOpsOnClickListener(row.getAppOpsOnClickListener());
|
||||
}
|
||||
|
||||
private int resolveColor(ImageView icon) {
|
||||
if (icon != null && icon.getDrawable() != null) {
|
||||
ColorFilter filter = icon.getDrawable().getColorFilter();
|
||||
if (filter instanceof PorterDuffColorFilter) {
|
||||
return ((PorterDuffColorFilter) filter).getColor();
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onContentUpdated(ExpandableNotificationRow row) {
|
||||
super.onContentUpdated(row);
|
||||
|
||||
@@ -584,15 +584,9 @@ public class NotificationInflater {
|
||||
mSbn.getNotification());
|
||||
Context packageContext = mSbn.getPackageContext(mContext);
|
||||
Notification notification = mSbn.getNotification();
|
||||
if (mIsLowPriority) {
|
||||
int backgroundColor = mContext.getColor(
|
||||
R.color.notification_material_background_low_priority_color);
|
||||
recoveredBuilder.setBackgroundColorHint(backgroundColor);
|
||||
}
|
||||
if (notification.isMediaNotification()) {
|
||||
MediaNotificationProcessor processor = new MediaNotificationProcessor(mContext,
|
||||
packageContext);
|
||||
processor.setIsLowPriority(mIsLowPriority);
|
||||
processor.processNotification(notification, recoveredBuilder);
|
||||
}
|
||||
return createRemoteViews(mReInflateFlags,
|
||||
|
||||
Reference in New Issue
Block a user