am c3059b44: Merge "Fix colored icons in doze mode" into lmp-mr1-dev
* commit 'c3059b444fbd30b1344cd5ee3c7030d1e9e5c408': Fix colored icons in doze mode
This commit is contained in:
@@ -3055,6 +3055,11 @@ public class Notification implements Parcelable
|
||||
* Apply any necessary background to smallIcons being used in the largeIcon spot.
|
||||
*/
|
||||
private void processSmallIconAsLarge(int largeIconId, RemoteViews contentView) {
|
||||
if (!isLegacy()) {
|
||||
contentView.setDrawableParameters(R.id.icon, false, -1,
|
||||
0xFFFFFFFF,
|
||||
PorterDuff.Mode.SRC_ATOP, -1);
|
||||
}
|
||||
if (!isLegacy() || mColorUtil.isGrayscaleIcon(mContext, largeIconId)) {
|
||||
applyLargeIconBackground(contentView);
|
||||
}
|
||||
@@ -3102,11 +3107,12 @@ public class Notification implements Parcelable
|
||||
*/
|
||||
private void processSmallRightIcon(int smallIconDrawableId,
|
||||
RemoteViews contentView) {
|
||||
if (!isLegacy() || mColorUtil.isGrayscaleIcon(mContext, smallIconDrawableId)) {
|
||||
if (!isLegacy()) {
|
||||
contentView.setDrawableParameters(R.id.right_icon, false, -1,
|
||||
0xFFFFFFFF,
|
||||
PorterDuff.Mode.SRC_ATOP, -1);
|
||||
|
||||
}
|
||||
if (!isLegacy() || mColorUtil.isGrayscaleIcon(mContext, smallIconDrawableId)) {
|
||||
contentView.setInt(R.id.right_icon,
|
||||
"setBackgroundResource",
|
||||
R.drawable.notification_icon_legacy_bg);
|
||||
|
||||
@@ -53,6 +53,9 @@ public class NotificationTemplateViewWrapper extends NotificationViewWrapper {
|
||||
private ImageView mIcon;
|
||||
protected ImageView mPicture;
|
||||
|
||||
/** Whether the icon needs to be forced grayscale when in dark mode. */
|
||||
private boolean mIconForceGraysaleWhenDark;
|
||||
|
||||
protected NotificationTemplateViewWrapper(Context ctx, View view) {
|
||||
super(view);
|
||||
mIconDarkAlpha = ctx.getResources().getInteger(R.integer.doze_small_icon_alpha);
|
||||
@@ -73,11 +76,15 @@ public class NotificationTemplateViewWrapper extends NotificationViewWrapper {
|
||||
mIcon = resolveIcon(largeIcon, rightIcon);
|
||||
mPicture = resolvePicture(largeIcon);
|
||||
mIconBackgroundColor = resolveBackgroundColor(mIcon);
|
||||
|
||||
// If the icon already has a color filter, we assume that we already forced the icon to be
|
||||
// white when we created the notification.
|
||||
mIconForceGraysaleWhenDark = mIcon != null && mIcon.getDrawable().getColorFilter() != null;
|
||||
}
|
||||
|
||||
private ImageView resolveIcon(ImageView largeIcon, ImageView rightIcon) {
|
||||
return largeIcon != null && largeIcon.getBackground() != null ? largeIcon
|
||||
: rightIcon != null && rightIcon.getBackground() != null ? rightIcon
|
||||
: rightIcon != null && rightIcon.getVisibility() == View.VISIBLE ? rightIcon
|
||||
: null;
|
||||
}
|
||||
|
||||
@@ -118,9 +125,15 @@ public class NotificationTemplateViewWrapper extends NotificationViewWrapper {
|
||||
if (fade) {
|
||||
fadeIconColorFilter(mIcon, dark, delay);
|
||||
fadeIconAlpha(mIcon, dark, delay);
|
||||
if (!mIconForceGraysaleWhenDark) {
|
||||
fadeGrayscale(mIcon, dark, delay);
|
||||
}
|
||||
} else {
|
||||
updateIconColorFilter(mIcon, dark);
|
||||
updateIconAlpha(mIcon, dark);
|
||||
if (!mIconForceGraysaleWhenDark) {
|
||||
updateGrayscale(mIcon, dark);
|
||||
}
|
||||
}
|
||||
}
|
||||
setPictureGrayscale(dark, fade, delay);
|
||||
@@ -196,8 +209,8 @@ public class NotificationTemplateViewWrapper extends NotificationViewWrapper {
|
||||
mIconColorFilter.setColor(color);
|
||||
Drawable background = target.getBackground();
|
||||
|
||||
// The notification might have been modified during the animation, so background might be
|
||||
// null here.
|
||||
// The background might be null for legacy notifications. Also, the notification might have
|
||||
// been modified during the animation, so background might be null here.
|
||||
if (background != null) {
|
||||
background.mutate().setColorFilter(mIconColorFilter);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user