Reduce color brightness in dark mode

pull/935/head
Alex Baker 4 years ago
parent 459434f30d
commit 367f291aa5

@ -8,6 +8,7 @@ import android.content.Intent
import android.os.Bundle
import android.os.Parcelable
import android.view.LayoutInflater
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.RecyclerView
import butterknife.BindView
@ -90,11 +91,15 @@ class ColorPalettePicker : InjectingDialogFragment() {
ButterKnife.bind(this, view)
palette = arguments!!.getSerializable(EXTRA_PALETTE) as ColorPickerAdapter.Palette
colors = when (palette) {
ColorPickerAdapter.Palette.COLORS -> themeCache.colors
ColorPickerAdapter.Palette.COLORS -> ThemeColor.COLORS.mapIndexed { index, color ->
ThemeColor(context, index, ContextCompat.getColor(context!!, color))
}
ColorPickerAdapter.Palette.ACCENTS -> ThemeAccent.ACCENTS.mapIndexed { index, _ ->
ThemeAccent(context, index)
}
ColorPickerAdapter.Palette.LAUNCHERS -> themeCache.colors.dropLast(1)
ColorPickerAdapter.Palette.LAUNCHERS -> ThemeColor.LAUNCHER_COLORS.mapIndexed { index, color ->
ThemeColor(context, index, ContextCompat.getColor(context!!, color))
}
ColorPickerAdapter.Palette.WIDGET_BACKGROUND -> themeCache.widgetThemes
}

@ -24,16 +24,17 @@ public class ThemeCache {
public static final String EXTRA_THEME_OVERRIDE = "extra_theme_override";
private final List<ThemeBase> themes = new ArrayList<>();
private final List<ThemeColor> colors = new ArrayList<>();
private final List<WidgetTheme> widgetThemes = new ArrayList<>();
private final ThemeColor untaggedColor;
private final Preferences preferences;
private final Inventory inventory;
private final Context context;
@Inject
public ThemeCache(Preferences preferences, Inventory inventory, @ForApplication Context context) {
this.preferences = preferences;
this.inventory = inventory;
this.context = context;
Resources resources = context.getResources();
themes.add(
@ -72,11 +73,6 @@ public class ThemeCache {
5,
getColor(context, android.R.color.white),
AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM));
for (int i = 0; i < ThemeColor.COLORS.length; i++) {
colors.add(
new ThemeColor(context, i, ContextCompat.getColor(context, ThemeColor.COLORS[i])));
}
String[] widgetBackgroundNames = resources.getStringArray(R.array.widget_background);
for (int i = 0; i < WidgetTheme.BACKGROUNDS.length; i++) {
widgetThemes.add(
@ -114,17 +110,14 @@ public class ThemeCache {
}
public ThemeColor getThemeColor(int index) {
return colors.get(index);
return new ThemeColor(
context, index, ContextCompat.getColor(context, ThemeColor.COLORS[index]));
}
public ThemeColor getUntaggedColor() {
return untaggedColor;
}
public List<ThemeColor> getColors() {
return copyOf(colors);
}
public List<WidgetTheme> getWidgetThemes() {
return copyOf(widgetThemes);
}

@ -78,6 +78,31 @@ public class ThemeColor implements Pickable {
};
public static final int[] COLORS =
new int[] {
R.color.theme_blue_grey,
R.color.theme_dark_grey,
R.color.theme_red,
R.color.theme_pink,
R.color.theme_purple,
R.color.theme_deep_purple,
R.color.theme_indigo,
R.color.theme_blue,
R.color.theme_light_blue,
R.color.theme_cyan,
R.color.theme_teal,
R.color.theme_green,
R.color.theme_light_green,
R.color.theme_lime,
R.color.theme_yellow,
R.color.theme_amber,
R.color.theme_orange,
R.color.theme_deep_orange,
R.color.theme_brown,
R.color.theme_grey,
R.color.theme_day_night
};
public static final int[] LAUNCHER_COLORS =
new int[] {
R.color.blue_grey_500,
R.color.grey_900,
@ -98,8 +123,7 @@ public class ThemeColor implements Pickable {
R.color.orange_500,
R.color.deep_orange_500,
R.color.brown_500,
R.color.grey_500,
R.color.white_100
R.color.grey_500
};
public static final Parcelable.Creator<ThemeColor> CREATOR =
@ -120,23 +144,11 @@ public class ThemeColor implements Pickable {
private final int colorPrimaryVariant;
private final boolean isDark;
public static ThemeColor newThemeColor(Context context, int color) {
try {
return new ThemeColor(context, color);
} catch (Exception e) {
Timber.e(e);
return new ThemeColor(context, 0);
}
}
public ThemeColor(Context context, int color) {
this(context, -1, color == 0 ? ContextCompat.getColor(context, R.color.blue_500) : color);
}
public ThemeColor(
Context context,
int index,
int colorPrimary) {
public ThemeColor(Context context, int index, int colorPrimary) {
this.index = index;
colorPrimary |= 0xFF000000; // remove alpha
this.colorPrimary = colorPrimary;
@ -156,6 +168,40 @@ public class ThemeColor implements Pickable {
isDark = source.readInt() == 1;
}
public static ThemeColor newThemeColor(Context context, int color) {
try {
return new ThemeColor(context, color);
} catch (Exception e) {
Timber.e(e);
return new ThemeColor(context, 0);
}
}
private static void colorMenu(Menu menu, int color) {
for (int i = 0, size = menu.size(); i < size; i++) {
final MenuItem menuItem = menu.getItem(i);
colorMenuItem(menuItem, color);
if (menuItem.hasSubMenu()) {
final SubMenu subMenu = menuItem.getSubMenu();
for (int j = 0; j < subMenu.size(); j++) {
colorMenuItem(subMenu.getItem(j), color);
}
}
}
}
private static void colorMenuItem(final MenuItem menuItem, final int color) {
colorDrawable(menuItem.getIcon(), color);
}
private static Drawable colorDrawable(Drawable drawable, int color) {
if (drawable != null) {
drawable.mutate();
drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
}
return drawable;
}
public void applyToSystemBars(Activity activity) {
setStatusBarColor(activity);
@ -285,31 +331,6 @@ public class ThemeColor implements Pickable {
colorMenu(menu, colorOnPrimary);
}
private static void colorMenu(Menu menu, int color) {
for (int i = 0, size = menu.size(); i < size; i++) {
final MenuItem menuItem = menu.getItem(i);
colorMenuItem(menuItem, color);
if (menuItem.hasSubMenu()) {
final SubMenu subMenu = menuItem.getSubMenu();
for (int j = 0; j < subMenu.size(); j++) {
colorMenuItem(subMenu.getItem(j), color);
}
}
}
}
private static void colorMenuItem(final MenuItem menuItem, final int color) {
colorDrawable(menuItem.getIcon(), color);
}
private static Drawable colorDrawable(Drawable drawable, int color) {
if (drawable != null) {
drawable.mutate();
drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
}
return drawable;
}
@Override
public boolean equals(Object o) {
if (this == o) {

@ -10,4 +10,26 @@
<color name="text_secondary">@color/white_60</color>
<color name="text_tertiary">@color/white_38</color>
<color name="overdue">@color/overdue_87</color>
<color name="theme_blue_grey">@color/blue_grey_200</color>
<color name="theme_dark_grey">@color/grey_900</color>
<color name="theme_red">@color/red_200</color>
<color name="theme_pink">@color/pink_200</color>
<color name="theme_purple">@color/purple_200</color>
<color name="theme_deep_purple">@color/deep_purple_200</color>
<color name="theme_indigo">@color/indigo_200</color>
<color name="theme_blue">@color/blue_200</color>
<color name="theme_light_blue">@color/light_blue_200</color>
<color name="theme_cyan">@color/cyan_200</color>
<color name="theme_teal">@color/teal_200</color>
<color name="theme_green">@color/green_200</color>
<color name="theme_light_green">@color/light_green_200</color>
<color name="theme_lime">@color/lime_200</color>
<color name="theme_yellow">@color/yellow_200</color>
<color name="theme_amber">@color/amber_200</color>
<color name="theme_orange">@color/orange_200</color>
<color name="theme_deep_orange">@color/deep_orange_200</color>
<color name="theme_brown">@color/brown_200</color>
<color name="theme_grey">@color/grey_200</color>
<color name="theme_day_night">@color/black_100</color>
</resources>

@ -6,80 +6,122 @@
-->
<resources>
<color name="theme_blue_grey">@color/blue_grey_500</color>
<color name="theme_dark_grey">@color/grey_800</color>
<color name="theme_red">@color/red_500</color>
<color name="theme_pink">@color/pink_500</color>
<color name="theme_purple">@color/purple_500</color>
<color name="theme_deep_purple">@color/deep_purple_500</color>
<color name="theme_indigo">@color/indigo_500</color>
<color name="theme_blue">@color/blue_500</color>
<color name="theme_light_blue">@color/light_blue_500</color>
<color name="theme_cyan">@color/cyan_500</color>
<color name="theme_teal">@color/teal_500</color>
<color name="theme_green">@color/green_500</color>
<color name="theme_light_green">@color/light_green_500</color>
<color name="theme_lime">@color/lime_500</color>
<color name="theme_yellow">@color/yellow_500</color>
<color name="theme_amber">@color/amber_500</color>
<color name="theme_orange">@color/orange_500</color>
<color name="theme_deep_orange">@color/deep_orange_500</color>
<color name="theme_brown">@color/brown_500</color>
<color name="theme_grey">@color/grey_500</color>
<color name="theme_day_night">@color/white_100</color>
<color name="red_200">#EF9A9A</color>
<color name="red_500">#f44336</color>
<color name="red_a400">#ff1744</color>
<color name="red_a100">#FF8A80</color>
<color name="pink_200">#F48FB1</color>
<color name="pink_500">#e91e63</color>
<color name="pink_a400">#f50057</color>
<color name="pink_a100">#FF80AB</color>
<color name="purple_200">#CE93D8</color>
<color name="purple_500">#9c27b0</color>
<color name="purple_a400">#d500f9</color>
<color name="purple_a100">#EA80FC</color>
<color name="deep_purple_200">#B39DDB</color>
<color name="deep_purple_500">#673ab7</color>
<color name="deep_purple_a400">#651fff</color>
<color name="deep_purple_a100">#B388FF</color>
<color name="indigo_200">#9FA8DA</color>
<color name="indigo_500">#3f51b5</color>
<color name="indigo_a400">#3d5afe</color>
<color name="indigo_a100">#8C9EFF</color>
<color name="blue_200">#90CAF9</color>
<color name="blue_500">#2196f3</color>
<color name="blue_a400">#2979ff</color>
<color name="blue_a100">#82B1FF</color>
<color name="light_blue_200">#81D4FA</color>
<color name="light_blue_500">#03a9f4</color>
<color name="light_blue_a400">#00b0ff</color>
<color name="light_blue_a100">#80D8FF</color>
<color name="cyan_200">#80DEEA</color>
<color name="cyan_500">#00bcd4</color>
<color name="cyan_a400">#00e5ff</color>
<color name="cyan_a100">#84FFFF</color>
<color name="teal_200">#80CBC4</color>
<color name="teal_500">#009688</color>
<color name="teal_a400">#1de9b6</color>
<color name="teal_a100">#A7FFEB</color>
<color name="green_200">#A5D6A7</color>
<color name="green_500">#4caf50</color>
<color name="green_a400">#00e676</color>
<color name="green_a100">#B9F6CA</color>
<color name="light_green_200">#C5E1A5</color>
<color name="light_green_500">#8bc34a</color>
<color name="light_green_a400">#76ff03</color>
<color name="light_green_a100">#CCFF90</color>
<color name="lime_200">#E6EE9C</color>
<color name="lime_500">#cddc39</color>
<color name="lime_a400">#c6ff00</color>
<color name="lime_a100">#F4FF81</color>
<color name="yellow_200">#FFF59D</color>
<color name="yellow_500">#ffeb3b</color>
<color name="yellow_a400">#ffea00</color>
<color name="yellow_a100">#FFFF8D</color>
<color name="amber_200">#FFE082</color>
<color name="amber_500">#ffc107</color>
<color name="amber_a400">#ffc400</color>
<color name="amber_a100">#FFE57F</color>
<color name="orange_200">#FFCC80</color>
<color name="orange_500">#ff9800</color>
<color name="orange_a400">#ff9100</color>
<color name="orange_a100">#FFD180</color>
<color name="deep_orange_200">#FFAB91</color>
<color name="deep_orange_500">#ff5722</color>
<color name="deep_orange_a400">#ff3d00</color>
<color name="deep_orange_a100">#FF9E80</color>
<color name="brown_200">#BCAAA4</color>
<color name="brown_500">#795548</color>
<color name="grey_200">#EEEEEE</color>
<color name="grey_500">#9e9e9e</color>
<color name="grey_800">#424242</color>
<color name="grey_900">#212121</color>
<color name="blue_grey_100">#CFD8DC</color>
<color name="blue_grey_200">#B0BEC5</color>
<color name="blue_grey_400">#78909c</color>
<color name="blue_grey_500">#607d8b</color>
<color name="black_100">#ff000000</color>
<color name="black_87">#de000000</color>
<color name="black_54">#8a000000</color>
<color name="black_38">#61000000</color>

Loading…
Cancel
Save