summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/ScrimView.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java23
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarTransitionsController.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java2
-rw-r--r--services/core/java/com/android/server/policy/PhoneWindowManager.java28
6 files changed, 41 insertions, 26 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ScrimView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ScrimView.java
index cb2aa947ac5e..a53e348fd16c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ScrimView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ScrimView.java
@@ -202,8 +202,7 @@ public class ScrimView extends View implements ConfigurationController.Configura
return mDrawable;
}
- @VisibleForTesting
- ColorExtractor.GradientColors getColors() {
+ public ColorExtractor.GradientColors getColors() {
return mColors;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java
index 9d699cfba53b..917a56fbc99d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java
@@ -16,11 +16,16 @@
package com.android.systemui.statusbar.phone;
+import android.app.WallpaperColors;
+import android.content.Context;
+import android.graphics.Color;
import android.graphics.Rect;
import android.view.View;
+import com.android.internal.colorextraction.ColorExtractor.GradientColors;
import com.android.systemui.Dependency;
import com.android.systemui.Dumpable;
+import com.android.systemui.R;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.DarkIconDispatcher;
@@ -49,6 +54,7 @@ public class LightBarController implements BatteryController.BatteryStateChangeC
private boolean mDockedLight;
private int mLastStatusBarMode;
private int mLastNavigationBarMode;
+ private final Color mDarkModeColor;
/**
* Whether the navigation bar should be light factoring in already how much alpha the scrim has
@@ -61,12 +67,14 @@ public class LightBarController implements BatteryController.BatteryStateChangeC
*/
private boolean mHasLightNavigationBar;
private boolean mScrimAlphaBelowThreshold;
+ private boolean mInvertLightNavBarWithScrim;
private float mScrimAlpha;
private final Rect mLastFullscreenBounds = new Rect();
private final Rect mLastDockedBounds = new Rect();
- public LightBarController() {
+ public LightBarController(Context ctx) {
+ mDarkModeColor = Color.valueOf(ctx.getColor(R.color.dark_mode_icon_color_single_tone));
mStatusBarIconController = Dependency.get(DarkIconDispatcher.class);
mBatteryController = Dependency.get(BatteryController.class);
mBatteryController.addCallback(this);
@@ -74,6 +82,7 @@ public class LightBarController implements BatteryController.BatteryStateChangeC
public void setNavigationBar(LightBarTransitionsController navigationBar) {
mNavigationBarController = navigationBar;
+ updateNavigation();
}
public void setFingerprintUnlockController(
@@ -119,7 +128,8 @@ public class LightBarController implements BatteryController.BatteryStateChangeC
boolean last = mNavigationLight;
mHasLightNavigationBar = isLight(vis, navigationBarMode,
View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
- mNavigationLight = mHasLightNavigationBar && mScrimAlphaBelowThreshold;
+ mNavigationLight = mHasLightNavigationBar
+ && (mScrimAlphaBelowThreshold || !mInvertLightNavBarWithScrim);
if (mNavigationLight != last) {
updateNavigation();
}
@@ -145,6 +155,15 @@ public class LightBarController implements BatteryController.BatteryStateChangeC
}
}
+ public void setScrimColor(GradientColors colors) {
+ boolean invertLightNavBarWithScrimBefore = mInvertLightNavBarWithScrim;
+ mInvertLightNavBarWithScrim = !colors.supportsDarkText();
+ if (mHasLightNavigationBar
+ && invertLightNavBarWithScrimBefore != mInvertLightNavBarWithScrim) {
+ reevaluate();
+ }
+ }
+
private boolean isLight(int vis, int barMode, int flag) {
boolean isTransparentBar = (barMode == MODE_TRANSPARENT
|| barMode == MODE_LIGHTS_OUT_TRANSPARENT);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarTransitionsController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarTransitionsController.java
index 6bd959fe2a54..417bef8575cb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarTransitionsController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarTransitionsController.java
@@ -23,8 +23,8 @@ import android.os.Handler;
import android.os.SystemClock;
import android.util.TimeUtils;
-import com.android.systemui.Dumpable;
import com.android.systemui.Dependency;
+import com.android.systemui.Dumpable;
import com.android.systemui.Interpolators;
import com.android.systemui.SysUiServiceProvider;
import com.android.systemui.statusbar.CommandQueue;
@@ -55,7 +55,6 @@ public class LightBarTransitionsController implements Dumpable, Callbacks {
private ValueAnimator mTintAnimator;
private float mDarkIntensity;
private float mNextDarkIntensity;
-
private final Runnable mTransitionDeferringDoneRunnable = new Runnable() {
@Override
public void run() {
@@ -130,6 +129,7 @@ public class LightBarTransitionsController implements Dumpable, Callbacks {
public void setIconsDark(boolean dark, boolean animate) {
if (!animate) {
setIconTintInternal(dark ? 1.0f : 0.0f);
+ mNextDarkIntensity = dark ? 1.0f : 0.0f;
} else if (mTransitionPending) {
deferIconTintChange(dark ? 1.0f : 0.0f);
} else if (mTransitionDeferring) {
@@ -155,12 +155,12 @@ public class LightBarTransitionsController implements Dumpable, Callbacks {
private void animateIconTint(float targetDarkIntensity, long delay,
long duration) {
+ if (mNextDarkIntensity == targetDarkIntensity) {
+ return;
+ }
if (mTintAnimator != null) {
mTintAnimator.cancel();
}
- if (mDarkIntensity == targetDarkIntensity) {
- return;
- }
mNextDarkIntensity = targetDarkIntensity;
mTintAnimator = ValueAnimator.ofFloat(mDarkIntensity, targetDarkIntensity);
mTintAnimator.addUpdateListener(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
index 6672f5e89414..a8b1c91fc235 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -315,6 +315,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
mScrimInFront.setColors(mSystemColors, animateScrimInFront);
mScrimBehind.setColors(mSystemColors, animateScrimBehind);
}
+ mLightBarController.setScrimColor(mScrimInFront.getColors());
}
if (mAnimateKeyguardFadingOut || mForceHideScrims) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index a11af51cc6bd..4d3395d8e322 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -1108,7 +1108,7 @@ public class StatusBar extends SystemUI implements DemoMode,
}
});
- mLightBarController = new LightBarController();
+ mLightBarController = new LightBarController(context);
if (mNavigationBar != null) {
mNavigationBar.setLightBarController(mLightBarController);
}
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 75fc25aaec77..7e0b950f268e 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -7832,21 +7832,17 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
private int updateLightStatusBarLw(int vis, WindowState opaque, WindowState opaqueOrDimming) {
- WindowState statusColorWin = isStatusBarKeyguard() && !mKeyguardOccluded
- ? mStatusBar
- : opaqueOrDimming;
-
- if (statusColorWin != null) {
- if (statusColorWin == opaque) {
- // If the top fullscreen-or-dimming window is also the top fullscreen, respect
- // its light flag.
- vis &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
- vis |= PolicyControl.getSystemUiVisibility(statusColorWin, null)
- & View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
- } else if (statusColorWin != null && statusColorWin.isDimming()) {
- // Otherwise if it's dimming, clear the light flag.
- vis &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
- }
+ final boolean onKeyguard = isStatusBarKeyguard() && !mKeyguardOccluded;
+ final WindowState statusColorWin = onKeyguard ? mStatusBar : opaqueOrDimming;
+ if (statusColorWin != null && (statusColorWin == opaque || onKeyguard)) {
+ // If the top fullscreen-or-dimming window is also the top fullscreen, respect
+ // its light flag.
+ vis &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
+ vis |= PolicyControl.getSystemUiVisibility(statusColorWin, null)
+ & View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
+ } else if (statusColorWin != null && statusColorWin.isDimming()) {
+ // Otherwise if it's dimming, clear the light flag.
+ vis &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
}
return vis;
}
@@ -7856,7 +7852,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
final WindowState imeWin = mWindowManagerFuncs.getInputMethodWindowLw();
final WindowState navColorWin;
- if (imeWin != null && imeWin.isVisibleLw()) {
+ if (imeWin != null && imeWin.isVisibleLw() && mNavigationBarPosition == NAV_BAR_BOTTOM) {
navColorWin = imeWin;
} else {
navColorWin = opaqueOrDimming;