From 19854e7b50168096814535e499a9a4008b930181 Mon Sep 17 00:00:00 2001 From: Beverly Date: Fri, 31 Mar 2023 20:37:17 +0000 Subject: [PATCH] Set text color in the KeyguardIndication Instead of directly setting the text color on the TextView. The text color should be updated when the TextView animates in the new text to show, not immediately on receiving a request to show new text. Test: atest KeyguardIndicationControllerTest Fixes: 185439308 Change-Id: I7f0a876f4e06864d4bd555ba9a85279aaad72c77 --- .../statusbar/KeyguardIndicationController.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java index fda2277959150..765c93ed209b2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java @@ -869,12 +869,9 @@ public class KeyguardIndicationController { // Walk down a precedence-ordered list of what indication // should be shown based on device state if (mDozing) { + boolean useMisalignmentColor = false; mLockScreenIndicationView.setVisibility(View.GONE); mTopIndicationView.setVisibility(VISIBLE); - // When dozing we ignore any text color and use white instead, because - // colors can be hard to read in low brightness. - mTopIndicationView.setTextColor(Color.WHITE); - CharSequence newIndication; if (!TextUtils.isEmpty(mBiometricMessage)) { newIndication = mBiometricMessage; // note: doesn't show mBiometricMessageFollowUp @@ -885,8 +882,8 @@ public class KeyguardIndicationController { mIndicationArea.setVisibility(GONE); return; } else if (!TextUtils.isEmpty(mAlignmentIndication)) { + useMisalignmentColor = true; newIndication = mAlignmentIndication; - mTopIndicationView.setTextColor(mContext.getColor(R.color.misalignment_text_color)); } else if (mPowerPluggedIn || mEnableBatteryDefender) { newIndication = computePowerIndication(); } else { @@ -896,7 +893,14 @@ public class KeyguardIndicationController { if (!TextUtils.equals(mTopIndicationView.getText(), newIndication)) { mWakeLock.setAcquired(true); - mTopIndicationView.switchIndication(newIndication, null, + mTopIndicationView.switchIndication(newIndication, + new KeyguardIndication.Builder() + .setMessage(newIndication) + .setTextColor(ColorStateList.valueOf( + useMisalignmentColor + ? mContext.getColor(R.color.misalignment_text_color) + : Color.WHITE)) + .build(), true, () -> mWakeLock.setAcquired(false)); } return;