Merge "[DO NOT MERGE] Bouncer - Update selected item text color" into tm-dev
diff --git a/packages/SystemUI/res-keyguard/values-night/styles.xml b/packages/SystemUI/res-keyguard/values-night/styles.xml
new file mode 100644
index 0000000..b5e0b65
--- /dev/null
+++ b/packages/SystemUI/res-keyguard/values-night/styles.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2022, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License")
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+ <style name="Bouncer.UserSwitcher.Spinner.Item">
+ <item name="android:textSize">@dimen/bouncer_user_switcher_item_text_size</item>
+ <item name="android:textColor">@color/bouncer_user_switcher_item_text</item>
+ </style>
+</resources>
diff --git a/packages/SystemUI/res/color/bouncer_user_switcher_item_text.xml b/packages/SystemUI/res/color/bouncer_user_switcher_item_text.xml
new file mode 100644
index 0000000..b1e4b34
--- /dev/null
+++ b/packages/SystemUI/res/color/bouncer_user_switcher_item_text.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2022 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_selected="false"
+ android:color="?android:attr/textColorPrimary"/>
+
+ <item android:color="?android:attr/textColorPrimaryInverse"/>
+</selector>
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
index fd7a6e6..f8c0590 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
@@ -707,6 +707,10 @@
mDisappearAnimRunning = false;
}
+ void reloadColors() {
+ mViewMode.reloadColors();
+ }
+
/**
* Enscapsulates the differences between bouncer modes for the container.
*/
@@ -728,6 +732,9 @@
/** Called when the view needs to reset or hides */
default void reset() {};
+ /** Refresh colors */
+ default void reloadColors() {};
+
/** On a successful auth, optionally handle how the view disappears */
default void startDisappearAnimation(SecurityMode securityMode) {};
@@ -822,6 +829,17 @@
}
@Override
+ public void reloadColors() {
+ TextView header = (TextView) mView.findViewById(R.id.user_switcher_header);
+ if (header != null) {
+ header.setTextColor(Utils.getColorAttrDefaultColor(mView.getContext(),
+ android.R.attr.textColorPrimary));
+ header.setBackground(mView.getContext().getDrawable(
+ R.drawable.bouncer_user_switcher_header_bg));
+ }
+ }
+
+ @Override
public void onDestroy() {
mUserSwitcherController.removeUserSwitchCallback(mUserSwitchCallback);
}
@@ -911,6 +929,7 @@
} else {
textView.setBackground(null);
}
+ textView.setSelected(item == currentUser);
view.setEnabled(item.isSwitchToEnabled);
view.setAlpha(view.isEnabled() ? USER_SWITCH_ENABLED_ALPHA :
USER_SWITCH_DISABLED_ALPHA);
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java
index 965fcd2..19a2d9e 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java
@@ -232,12 +232,12 @@
new ConfigurationController.ConfigurationListener() {
@Override
public void onThemeChanged() {
- mSecurityViewFlipperController.reloadColors();
+ reloadColors();
}
@Override
public void onUiModeChanged() {
- mSecurityViewFlipperController.reloadColors();
+ reloadColors();
}
};
private final KeyguardUpdateMonitorCallback mKeyguardUpdateMonitorCallback =
@@ -635,6 +635,11 @@
mView.updatePositionByTouchX(x);
}
+ private void reloadColors() {
+ mSecurityViewFlipperController.reloadColors();
+ mView.reloadColors();
+ }
+
static class Factory {
private final KeyguardSecurityContainer mView;
diff --git a/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java b/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java
index eb6705a..caf7ee4 100644
--- a/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java
+++ b/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java
@@ -30,8 +30,8 @@
import androidx.annotation.StyleRes;
+import com.android.settingslib.Utils;
import com.android.systemui.animation.Interpolators;
-import com.android.systemui.util.Utils;
/**
* Provides background color and radius animations for key pad buttons.
@@ -45,6 +45,7 @@
private int mNormalColor;
private int mHighlightColor;
private int mStyle;
+ private TextView mDigitTextView;
private static final int EXPAND_ANIMATION_MS = 100;
private static final int EXPAND_COLOR_ANIMATION_MS = 50;
private static final int CONTRACT_ANIMATION_DELAY_MS = 33;
@@ -58,71 +59,9 @@
@Nullable TextView digitTextView) {
mStyle = style;
mBackground = (GradientDrawable) drawable;
+ mDigitTextView = digitTextView;
reloadColors(context);
- int textColorPrimary = com.android.settingslib.Utils
- .getColorAttrDefaultColor(context, android.R.attr.textColorPrimary);
- int textColorPrimaryInverse = com.android.settingslib.Utils
- .getColorAttrDefaultColor(context, android.R.attr.textColorPrimaryInverse);
-
- // Actual values will be updated later, usually during an onLayout() call
- mExpandAnimator = ValueAnimator.ofFloat(0f, 1f);
- mExpandAnimator.setDuration(EXPAND_ANIMATION_MS);
- mExpandAnimator.setInterpolator(Interpolators.LINEAR);
- mExpandAnimator.addUpdateListener(
- anim -> mBackground.setCornerRadius((float) anim.getAnimatedValue()));
-
- ValueAnimator expandBackgroundColorAnimator = ValueAnimator.ofObject(new ArgbEvaluator(),
- mNormalColor, mHighlightColor);
- expandBackgroundColorAnimator.setDuration(EXPAND_COLOR_ANIMATION_MS);
- expandBackgroundColorAnimator.setInterpolator(Interpolators.LINEAR);
- expandBackgroundColorAnimator.addUpdateListener(
- animator -> mBackground.setColor((int) animator.getAnimatedValue()));
-
- ValueAnimator expandTextColorAnimator =
- ValueAnimator.ofObject(new ArgbEvaluator(),
- textColorPrimary, textColorPrimaryInverse);
- expandTextColorAnimator.setInterpolator(Interpolators.LINEAR);
- expandTextColorAnimator.setDuration(EXPAND_COLOR_ANIMATION_MS);
- expandTextColorAnimator.addUpdateListener(valueAnimator -> {
- if (digitTextView != null) {
- digitTextView.setTextColor((int) valueAnimator.getAnimatedValue());
- }
- });
-
- mExpandAnimatorSet = new AnimatorSet();
- mExpandAnimatorSet.playTogether(mExpandAnimator,
- expandBackgroundColorAnimator, expandTextColorAnimator);
-
- mContractAnimator = ValueAnimator.ofFloat(1f, 0f);
- mContractAnimator.setStartDelay(CONTRACT_ANIMATION_DELAY_MS);
- mContractAnimator.setDuration(CONTRACT_ANIMATION_MS);
- mContractAnimator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN);
- mContractAnimator.addUpdateListener(
- anim -> mBackground.setCornerRadius((float) anim.getAnimatedValue()));
- ValueAnimator contractBackgroundColorAnimator = ValueAnimator.ofObject(new ArgbEvaluator(),
- mHighlightColor, mNormalColor);
- contractBackgroundColorAnimator.setInterpolator(Interpolators.LINEAR);
- contractBackgroundColorAnimator.setStartDelay(CONTRACT_ANIMATION_DELAY_MS);
- contractBackgroundColorAnimator.setDuration(CONTRACT_ANIMATION_MS);
- contractBackgroundColorAnimator.addUpdateListener(
- animator -> mBackground.setColor((int) animator.getAnimatedValue()));
-
- ValueAnimator contractTextColorAnimator =
- ValueAnimator.ofObject(new ArgbEvaluator(), textColorPrimaryInverse,
- textColorPrimary);
- contractTextColorAnimator.setInterpolator(Interpolators.LINEAR);
- contractTextColorAnimator.setStartDelay(CONTRACT_ANIMATION_DELAY_MS);
- contractTextColorAnimator.setDuration(CONTRACT_ANIMATION_MS);
- contractTextColorAnimator.addUpdateListener(valueAnimator -> {
- if (digitTextView != null) {
- digitTextView.setTextColor((int) valueAnimator.getAnimatedValue());
- }
- });
-
- mContractAnimatorSet = new AnimatorSet();
- mContractAnimatorSet.playTogether(mContractAnimator,
- contractBackgroundColorAnimator, contractTextColorAnimator);
}
public void expand() {
@@ -160,6 +99,73 @@
a.recycle();
mBackground.setColor(mNormalColor);
+ createAnimators(context);
+ }
+
+ private void createAnimators(Context context) {
+ int textColorPrimary = Utils.getColorAttrDefaultColor(context,
+ android.R.attr.textColorPrimary);
+ int textColorPrimaryInverse = Utils.getColorAttrDefaultColor(context,
+ android.R.attr.textColorPrimaryInverse);
+
+ // Actual values will be updated later, usually during an onLayout() call
+ mExpandAnimator = ValueAnimator.ofFloat(0f, 1f);
+ mExpandAnimator.setDuration(EXPAND_ANIMATION_MS);
+ mExpandAnimator.setInterpolator(Interpolators.LINEAR);
+ mExpandAnimator.addUpdateListener(
+ anim -> mBackground.setCornerRadius((float) anim.getAnimatedValue()));
+
+ ValueAnimator expandBackgroundColorAnimator = ValueAnimator.ofObject(new ArgbEvaluator(),
+ mNormalColor, mHighlightColor);
+ expandBackgroundColorAnimator.setDuration(EXPAND_COLOR_ANIMATION_MS);
+ expandBackgroundColorAnimator.setInterpolator(Interpolators.LINEAR);
+ expandBackgroundColorAnimator.addUpdateListener(
+ animator -> mBackground.setColor((int) animator.getAnimatedValue()));
+
+ ValueAnimator expandTextColorAnimator =
+ ValueAnimator.ofObject(new ArgbEvaluator(),
+ textColorPrimary, textColorPrimaryInverse);
+ expandTextColorAnimator.setInterpolator(Interpolators.LINEAR);
+ expandTextColorAnimator.setDuration(EXPAND_COLOR_ANIMATION_MS);
+ expandTextColorAnimator.addUpdateListener(valueAnimator -> {
+ if (mDigitTextView != null) {
+ mDigitTextView.setTextColor((int) valueAnimator.getAnimatedValue());
+ }
+ });
+
+ mExpandAnimatorSet = new AnimatorSet();
+ mExpandAnimatorSet.playTogether(mExpandAnimator,
+ expandBackgroundColorAnimator, expandTextColorAnimator);
+
+ mContractAnimator = ValueAnimator.ofFloat(1f, 0f);
+ mContractAnimator.setStartDelay(CONTRACT_ANIMATION_DELAY_MS);
+ mContractAnimator.setDuration(CONTRACT_ANIMATION_MS);
+ mContractAnimator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN);
+ mContractAnimator.addUpdateListener(
+ anim -> mBackground.setCornerRadius((float) anim.getAnimatedValue()));
+ ValueAnimator contractBackgroundColorAnimator = ValueAnimator.ofObject(new ArgbEvaluator(),
+ mHighlightColor, mNormalColor);
+ contractBackgroundColorAnimator.setInterpolator(Interpolators.LINEAR);
+ contractBackgroundColorAnimator.setStartDelay(CONTRACT_ANIMATION_DELAY_MS);
+ contractBackgroundColorAnimator.setDuration(CONTRACT_ANIMATION_MS);
+ contractBackgroundColorAnimator.addUpdateListener(
+ animator -> mBackground.setColor((int) animator.getAnimatedValue()));
+
+ ValueAnimator contractTextColorAnimator =
+ ValueAnimator.ofObject(new ArgbEvaluator(), textColorPrimaryInverse,
+ textColorPrimary);
+ contractTextColorAnimator.setInterpolator(Interpolators.LINEAR);
+ contractTextColorAnimator.setStartDelay(CONTRACT_ANIMATION_DELAY_MS);
+ contractTextColorAnimator.setDuration(CONTRACT_ANIMATION_MS);
+ contractTextColorAnimator.addUpdateListener(valueAnimator -> {
+ if (mDigitTextView != null) {
+ mDigitTextView.setTextColor((int) valueAnimator.getAnimatedValue());
+ }
+ });
+
+ mContractAnimatorSet = new AnimatorSet();
+ mContractAnimatorSet.playTogether(mContractAnimator,
+ contractBackgroundColorAnimator, contractTextColorAnimator);
}
}