From de07d21864a0b14a19e3f3d03b6071c33da5505a Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Tue, 23 Oct 2018 17:47:03 -0700 Subject: [PATCH] fix decor color selection Change-Id: I4baa9f5f0abc6fdba2cdb5fadb9d75db929ce6b8 Fixes: 118309780 Test: visual --- .../systemui/statusbar/StatusBarIconView.java | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java index cc5fbe53bba49..1e04377e25b2a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java @@ -38,7 +38,6 @@ import android.graphics.drawable.Icon; import android.os.Parcelable; import android.os.UserHandle; import android.service.notification.StatusBarNotification; -import androidx.core.graphics.ColorUtils; import android.text.TextUtils; import android.util.AttributeSet; import android.util.FloatProperty; @@ -49,6 +48,8 @@ import android.view.ViewDebug; import android.view.accessibility.AccessibilityEvent; import android.view.animation.Interpolator; +import androidx.core.graphics.ColorUtils; + import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.util.ContrastColorUtil; import com.android.systemui.Interpolators; @@ -121,6 +122,7 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi private StatusBarNotification mNotification; private final boolean mBlocked; private int mDensity; + private boolean mNightMode; private float mIconScale = 1.0f; private final Paint mDotPaint = new Paint(Paint.ANTI_ALIAS_FLAG); private float mDotRadius; @@ -171,10 +173,10 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi setNotification(sbn); setScaleType(ScaleType.CENTER); mDensity = context.getResources().getDisplayMetrics().densityDpi; - if (mNotification != null) { - setDecorColor(getContext().getColor( - com.android.internal.R.color.notification_default_color_light)); - } + Configuration configuration = context.getResources().getConfiguration(); + mNightMode = (configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK) + == Configuration.UI_MODE_NIGHT_YES; + initializeDecorColor(); reloadDimens(); maybeUpdateIconScaleDimens(); } @@ -222,6 +224,12 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi maybeUpdateIconScaleDimens(); updateDrawable(); } + boolean nightMode = (newConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK) + == Configuration.UI_MODE_NIGHT_YES; + if (nightMode != mNightMode) { + mNightMode = nightMode; + initializeDecorColor(); + } } private void reloadDimens() { @@ -540,6 +548,14 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi updateDecorColor(); } + private void initializeDecorColor() { + if (mNotification != null) { + setDecorColor(getContext().getColor(mNightMode + ? com.android.internal.R.color.notification_default_color_dark + : com.android.internal.R.color.notification_default_color_light)); + } + } + private void updateDecorColor() { int color = NotificationUtils.interpolateColors(mDecorColor, Color.WHITE, mDarkAmount); if (mDotPaint.getColor() != color) {