summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Edgar Wang <edgarwang@google.com> 2024-12-18 22:13:18 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2024-12-18 22:13:18 -0800
commitfeefc3db5590bd444abe7bcf7b7a4e64fa9decac (patch)
treef191571d212d3a92057e3bde908b6c73db8c8fa1
parent2bdcb10b5e1a7f802b078eba55cdf5378d79beea (diff)
parentd09fcee855a0c322388a0bd194b6f9f4456e2d13 (diff)
Merge "[Expressive design] support material color extraction" into main
-rw-r--r--packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java1
-rw-r--r--packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/LottieColorUtils.java155
2 files changed, 109 insertions, 47 deletions
diff --git a/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java b/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java
index adc4f316aca9..bc4f1f942dc0 100644
--- a/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java
+++ b/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java
@@ -167,6 +167,7 @@ public class IllustrationPreference extends Preference implements GroupSectionDi
if (mLottieDynamicColor) {
LottieColorUtils.applyDynamicColors(getContext(), illustrationView);
}
+ LottieColorUtils.applyMaterialColor(getContext(), illustrationView);
if (mOnBindListener != null) {
mOnBindListener.onBind(illustrationView);
diff --git a/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/LottieColorUtils.java b/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/LottieColorUtils.java
index 98a72909b276..4421424c0e39 100644
--- a/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/LottieColorUtils.java
+++ b/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/LottieColorUtils.java
@@ -21,14 +21,14 @@ import android.content.res.Configuration;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
-import com.android.settingslib.color.R;
+import androidx.annotation.NonNull;
+
+import com.android.settingslib.widget.theme.R;
import com.airbnb.lottie.LottieAnimationView;
import com.airbnb.lottie.LottieProperty;
import com.airbnb.lottie.model.KeyPath;
-import java.util.Collections;
-import java.util.HashMap;
import java.util.Map;
/**
@@ -37,52 +37,97 @@ import java.util.Map;
*/
public class LottieColorUtils {
private static final Map<String, Integer> DARK_TO_LIGHT_THEME_COLOR_MAP;
+ private static final Map<String, Integer> MATERIAL_COLOR_MAP;
static {
- HashMap<String, Integer> map = new HashMap<>();
- map.put(
- ".grey200",
- R.color.settingslib_color_grey800);
- map.put(
- ".grey600",
- R.color.settingslib_color_grey400);
- map.put(
- ".grey800",
- R.color.settingslib_color_grey300);
- map.put(
- ".grey900",
- R.color.settingslib_color_grey50);
- map.put(
- ".red100",
- R.color.settingslib_color_red500);
- map.put(
- ".red200",
- R.color.settingslib_color_red500);
- map.put(
- ".red400",
- R.color.settingslib_color_red600);
- map.put(
- ".black",
- android.R.color.white);
- map.put(
- ".blue200",
- R.color.settingslib_color_blue700);
- map.put(
- ".blue400",
- R.color.settingslib_color_blue600);
- map.put(
- ".green100",
- R.color.settingslib_color_green500);
- map.put(
- ".green200",
- R.color.settingslib_color_green500);
- map.put(
- ".green400",
- R.color.settingslib_color_green600);
- map.put(
- ".cream",
- R.color.settingslib_color_charcoal);
- DARK_TO_LIGHT_THEME_COLOR_MAP = Collections.unmodifiableMap(map);
+ DARK_TO_LIGHT_THEME_COLOR_MAP = Map.ofEntries(
+ Map.entry(".grey200",
+ com.android.settingslib.color.R.color.settingslib_color_grey800),
+ Map.entry(".grey600",
+ com.android.settingslib.color.R.color.settingslib_color_grey400),
+ Map.entry(".grey800",
+ com.android.settingslib.color.R.color.settingslib_color_grey300),
+ Map.entry(".grey900",
+ com.android.settingslib.color.R.color.settingslib_color_grey50),
+ Map.entry(".red100",
+ com.android.settingslib.color.R.color.settingslib_color_red500),
+ Map.entry(".red200",
+ com.android.settingslib.color.R.color.settingslib_color_red500),
+ Map.entry(".red400",
+ com.android.settingslib.color.R.color.settingslib_color_red600),
+ Map.entry(".black",
+ android.R.color.white),
+ Map.entry(".blue200",
+ com.android.settingslib.color.R.color.settingslib_color_blue700),
+ Map.entry(".blue400",
+ com.android.settingslib.color.R.color.settingslib_color_blue600),
+ Map.entry(".green100",
+ com.android.settingslib.color.R.color.settingslib_color_green500),
+ Map.entry(".green200",
+ com.android.settingslib.color.R.color.settingslib_color_green500),
+ Map.entry(".green400",
+ com.android.settingslib.color.R.color.settingslib_color_green600),
+ Map.entry(".cream",
+ com.android.settingslib.color.R.color.settingslib_color_charcoal));
+
+ MATERIAL_COLOR_MAP = Map.ofEntries(
+ Map.entry(".primary", R.color.settingslib_materialColorPrimary),
+ Map.entry(".onPrimary", R.color.settingslib_materialColorOnPrimary),
+ Map.entry(".primaryContainer", R.color.settingslib_materialColorPrimaryContainer),
+ Map.entry(".onPrimaryContainer",
+ R.color.settingslib_materialColorOnPrimaryContainer),
+ Map.entry(".primaryInverse", R.color.settingslib_materialColorPrimaryInverse),
+ Map.entry(".primaryFixed", R.color.settingslib_materialColorPrimaryFixed),
+ Map.entry(".primaryFixedDim", R.color.settingslib_materialColorPrimaryFixedDim),
+ Map.entry(".onPrimaryFixed", R.color.settingslib_materialColorOnPrimaryFixed),
+ Map.entry(".onPrimaryFixedVariant",
+ R.color.settingslib_materialColorOnPrimaryFixedVariant),
+ Map.entry(".secondary", R.color.settingslib_materialColorSecondary),
+ Map.entry(".onSecondary", R.color.settingslib_materialColorOnSecondary),
+ Map.entry(".secondaryContainer",
+ R.color.settingslib_materialColorSecondaryContainer),
+ Map.entry(".onSecondaryContainer",
+ R.color.settingslib_materialColorOnSecondaryContainer),
+ Map.entry(".secondaryFixed", R.color.settingslib_materialColorSecondaryFixed),
+ Map.entry(".secondaryFixedDim", R.color.settingslib_materialColorSecondaryFixedDim),
+ Map.entry(".onSecondaryFixed", R.color.settingslib_materialColorOnSecondaryFixed),
+ Map.entry(".onSecondaryFixedVariant",
+ R.color.settingslib_materialColorOnSecondaryFixedVariant),
+ Map.entry(".tertiary", R.color.settingslib_materialColorTertiary),
+ Map.entry(".onTertiary", R.color.settingslib_materialColorOnTertiary),
+ Map.entry(".tertiaryContainer", R.color.settingslib_materialColorTertiaryContainer),
+ Map.entry(".onTertiaryContainer",
+ R.color.settingslib_materialColorOnTertiaryContainer),
+ Map.entry(".tertiaryFixed", R.color.settingslib_materialColorTertiaryFixed),
+ Map.entry(".tertiaryFixedDim", R.color.settingslib_materialColorTertiaryFixedDim),
+ Map.entry(".onTertiaryFixed", R.color.settingslib_materialColorOnTertiaryFixed),
+ Map.entry(".onTertiaryFixedVariant",
+ R.color.settingslib_materialColorOnTertiaryFixedVariant),
+ Map.entry(".error", R.color.settingslib_materialColorError),
+ Map.entry(".onError", R.color.settingslib_materialColorOnError),
+ Map.entry(".errorContainer", R.color.settingslib_materialColorErrorContainer),
+ Map.entry(".onErrorContainer", R.color.settingslib_materialColorOnErrorContainer),
+ Map.entry(".outline", R.color.settingslib_materialColorOutline),
+ Map.entry(".outlineVariant", R.color.settingslib_materialColorOutlineVariant),
+ Map.entry(".background", R.color.settingslib_materialColorBackground),
+ Map.entry(".onBackground", R.color.settingslib_materialColorOnBackground),
+ Map.entry(".surface", R.color.settingslib_materialColorSurface),
+ Map.entry(".onSurface", R.color.settingslib_materialColorOnSurface),
+ Map.entry(".surfaceVariant", R.color.settingslib_materialColorSurfaceVariant),
+ Map.entry(".onSurfaceVariant", R.color.settingslib_materialColorOnSurfaceVariant),
+ Map.entry(".surfaceInverse", R.color.settingslib_materialColorSurfaceInverse),
+ Map.entry(".onSurfaceInverse", R.color.settingslib_materialColorOnSurfaceInverse),
+ Map.entry(".surfaceBright", R.color.settingslib_materialColorSurfaceBright),
+ Map.entry(".surfaceDim", R.color.settingslib_materialColorSurfaceDim),
+ Map.entry(".surfaceContainer", R.color.settingslib_materialColorSurfaceContainer),
+ Map.entry(".surfaceContainerLow",
+ R.color.settingslib_materialColorSurfaceContainerLow),
+ Map.entry(".surfaceContainerLowest",
+ R.color.settingslib_materialColorSurfaceContainerLowest),
+ Map.entry(".surfaceContainerHigh",
+ R.color.settingslib_materialColorSurfaceContainerHigh),
+ Map.entry(".surfaceContainerHighest",
+ R.color.settingslib_materialColorSurfaceContainerHighest));
}
private LottieColorUtils() {
@@ -108,4 +153,20 @@ public class LottieColorUtils {
frameInfo -> new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP));
}
}
+
+ /** Applies material colors. */
+ public static void applyMaterialColor(@NonNull Context context,
+ @NonNull LottieAnimationView lottieAnimationView) {
+ if (!SettingsThemeHelper.isExpressiveTheme(context)) {
+ return;
+ }
+
+ for (String key : MATERIAL_COLOR_MAP.keySet()) {
+ final int color = context.getColor(MATERIAL_COLOR_MAP.get(key));
+ lottieAnimationView.addValueCallback(
+ new KeyPath("**", key, "**"),
+ LottieProperty.COLOR_FILTER,
+ frameInfo -> new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP));
+ }
+ }
}