mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-04 01:46:49 +00:00
Some minor fixes for extracted status bar.
- setLightStatusBar() is now updateStatusBar(), with a forceLight parameter. We set the status bar to be light if forceLight or shouldBeLightStatusBar() (based on wallpaper). - Force status bar to be light if all apps is open. - Default to dark status bar, not light (light == dark icons) Bug: 29452834 Change-Id: I7b102ceff2f1ef2ab8defd4a46c698df4feaf2a5
This commit is contained in:
@@ -280,7 +280,6 @@ public class Launcher extends Activity
|
||||
private boolean mVisible;
|
||||
private boolean mHasFocus;
|
||||
private boolean mAttached;
|
||||
private boolean mIsLightStatusBar;
|
||||
|
||||
/** Maps launcher activity components to their list of shortcut ids. */
|
||||
private MultiHashMap<ComponentKey, String> mDeepShortcutMap = new MultiHashMap<>();
|
||||
@@ -485,33 +484,34 @@ public class Launcher extends Activity
|
||||
|
||||
private void loadExtractedColorsAndColorItems() {
|
||||
// TODO: do this in pre-N as well, once the extraction part is complete.
|
||||
if (mExtractedColors != null && Utilities.isNycOrAbove()) {
|
||||
if (Utilities.isNycOrAbove()) {
|
||||
mExtractedColors.load(this);
|
||||
mHotseat.updateColor(mExtractedColors, !mPaused);
|
||||
mWorkspace.getPageIndicator().updateColor(mExtractedColors);
|
||||
setLightStatusBar(shouldBeLightStatusBar());
|
||||
// It's possible that All Apps is visible when this is run,
|
||||
// so always use light status bar in that case.
|
||||
activateLightStatusBar(isAllAppsVisible());
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns whether a light status bar (dark icons) should be used based on the wallpaper. */
|
||||
public boolean shouldBeLightStatusBar() {
|
||||
return mExtractedColors.getColor(ExtractedColors.STATUS_BAR_INDEX,
|
||||
ExtractedColors.DEFAULT_LIGHT) == ExtractedColors.DEFAULT_LIGHT;
|
||||
}
|
||||
|
||||
public void setLightStatusBar(boolean lightStatusBar) {
|
||||
// Already set correctly
|
||||
if (mIsLightStatusBar == lightStatusBar) {
|
||||
return;
|
||||
}
|
||||
mIsLightStatusBar = lightStatusBar;
|
||||
int systemUiFlags = getWindow().getDecorView().getSystemUiVisibility();
|
||||
/**
|
||||
* Sets the status bar to be light or not. Light status bar means dark icons.
|
||||
* @param activate if true, make sure the status bar is light, otherwise base on wallpaper.
|
||||
*/
|
||||
public void activateLightStatusBar(boolean activate) {
|
||||
boolean lightStatusBar = activate
|
||||
|| mExtractedColors.getColor(ExtractedColors.STATUS_BAR_INDEX,
|
||||
ExtractedColors.DEFAULT_DARK) == ExtractedColors.DEFAULT_LIGHT;
|
||||
int oldSystemUiFlags = getWindow().getDecorView().getSystemUiVisibility();
|
||||
int newSystemUiFlags = oldSystemUiFlags;
|
||||
if (lightStatusBar) {
|
||||
systemUiFlags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
|
||||
newSystemUiFlags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
|
||||
} else {
|
||||
systemUiFlags &= ~(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
newSystemUiFlags &= ~(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
}
|
||||
if (newSystemUiFlags != oldSystemUiFlags) {
|
||||
getWindow().getDecorView().setSystemUiVisibility(newSystemUiFlags);
|
||||
}
|
||||
getWindow().getDecorView().setSystemUiVisibility(systemUiFlags);
|
||||
}
|
||||
|
||||
private LauncherCallbacks mLauncherCallbacks;
|
||||
|
||||
@@ -277,8 +277,8 @@ public class AllAppsTransitionController implements TouchController, VerticalPul
|
||||
}
|
||||
// Use a light status bar (dark icons) if all apps is behind at least half of the status
|
||||
// bar. If the status bar is already light due to wallpaper extraction, keep it that way.
|
||||
boolean enable = shift <= mStatusBarHeight / 2 || mLauncher.shouldBeLightStatusBar();
|
||||
mLauncher.setLightStatusBar(enable);
|
||||
boolean forceLight = shift <= mStatusBarHeight / 2;
|
||||
mLauncher.activateLightStatusBar(forceLight);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user