Use contrasted color icons
Test: manual in dark mode
Fixes: 150411005
Change-Id: I850cf89fce79131f57f9e390225be91ad6cf3274
diff --git a/src/com/android/settings/notification/history/NotificationSbnAdapter.java b/src/com/android/settings/notification/history/NotificationSbnAdapter.java
index f7a747b..2a7bed2 100644
--- a/src/com/android/settings/notification/history/NotificationSbnAdapter.java
+++ b/src/com/android/settings/notification/history/NotificationSbnAdapter.java
@@ -16,14 +16,18 @@
package com.android.settings.notification.history;
-import static android.content.pm.PackageManager.*;
+import static android.app.Notification.COLOR_DEFAULT;
+import static android.content.pm.PackageManager.MATCH_ANY_USER;
+import static android.content.pm.PackageManager.NameNotFoundException;
import static android.os.UserHandle.USER_ALL;
import static android.os.UserHandle.USER_CURRENT;
+import android.annotation.ColorInt;
import android.app.Notification;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
+import android.content.res.Configuration;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.os.UserHandle;
@@ -38,6 +42,7 @@
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
+import com.android.internal.util.ContrastColorUtil;
import com.android.settings.R;
import java.util.ArrayList;
@@ -53,12 +58,19 @@
private Map<Integer, Drawable> mUserBadgeCache;
private final Context mContext;
private PackageManager mPm;
+ private @ColorInt int mBackgroundColor;
+ private boolean mInNightMode;
public NotificationSbnAdapter(Context context, PackageManager pm) {
mContext = context;
mPm = pm;
mUserBadgeCache = new HashMap<>();
mValues = new ArrayList<>();
+ mBackgroundColor = mContext.getColor(
+ com.android.internal.R.color.notification_material_background_color);
+ Configuration currentConfig = mContext.getResources().getConfiguration();
+ mInNightMode = (currentConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK)
+ == Configuration.UI_MODE_NIGHT_YES;
setHasStableIds(true);
}
@@ -169,7 +181,7 @@
return null;
}
draw.mutate();
- draw.setColorFilter(sbn.getNotification().color, PorterDuff.Mode.SRC_ATOP);
+ draw.setColorFilter(getContrastedColor(sbn.getNotification()), PorterDuff.Mode.SRC_ATOP);
return draw;
}
@@ -180,4 +192,13 @@
}
return userId;
}
+
+ private int getContrastedColor(Notification n) {
+ int rawColor = n.color;
+ if (rawColor != COLOR_DEFAULT) {
+ rawColor |= 0xFF000000; // no alpha for custom colors
+ }
+ return ContrastColorUtil.resolveContrastColor(
+ mContext, rawColor, mBackgroundColor, mInNightMode);
+ }
}