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 0000000000000..b5e0b655254fd --- /dev/null +++ b/packages/SystemUI/res-keyguard/values-night/styles.xml @@ -0,0 +1,26 @@ + + + + + + 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 0000000000000..b1e4b34670378 --- /dev/null +++ b/packages/SystemUI/res/color/bouncer_user_switcher_item_text.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java index fd7a6e624e2db..f8c0590a8d75e 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java @@ -707,6 +707,10 @@ public class KeyguardSecurityContainer extends FrameLayout { mDisappearAnimRunning = false; } + void reloadColors() { + mViewMode.reloadColors(); + } + /** * Enscapsulates the differences between bouncer modes for the container. */ @@ -728,6 +732,9 @@ public class KeyguardSecurityContainer extends FrameLayout { /** 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) {}; @@ -821,6 +828,17 @@ public class KeyguardSecurityContainer extends FrameLayout { } } + @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 @@ public class KeyguardSecurityContainer extends FrameLayout { } 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 965fcd2653f44..19a2d9ed5b7b3 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java @@ -232,12 +232,12 @@ public class KeyguardSecurityContainerController extends ViewController 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 @@ class NumPadAnimator { 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); } }