Starting March 27, 2025, we recommend using android-latest-release instead of aosp-main to build and contribute to AOSP. For more information, see Changes to AOSP.
Each of them comprise of a set of 13 colors with defined various luminance
values as described at
R.color,
but with undefined hue and chroma values that can be dynamically generated by
the Android system at runtime.
Theme styles for dynamic color
Starting with Android 13, six different theme styles
are supported with variations on the dynamic color algorithm that maintain
developer needs and contrast expectations. These are listed for generating the
65 dynamic color used by apps:
TONAL_SPOT is a mid-vibrancy palette that uses an system_accent3_0 color
analogous to the system_accent1_0 color (carried over from the Android 12
release and slightly adjusted).
VIBRANT is a high-vibrancy palette that harmoniously blends subtle shift
between colors.
EXPRESSIVE is a high-vibrancy palette that pairs unexpected and unique
accents colors together.
SPRITZ is a low-vibrancy palette that creates a soft wash between colors.
RAINBOW uses both chromatic accents and neutral surfaces to create a more
subtle color experience for users.
This is NOT RECOMMENDED to be used with wallpaper-based color
extraction and should instead be used with static color themes.
FRUIT_SALAD provides two tone colors to give users more expression.
This is NOT RECOMMENDED to be used with wallpaper-based color
extraction and should instead be used with static color themes.
The system theme is driven by the same setting as it was in Android 12,
which is Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES. For Android
13, it requires only one key on its JSON that sends the
source color to generate the 65 color palettes:
Each tonal palette has 13 color values ending in the indexes 0, 10, 50, 100,
200, 300, 400, 500, 600, 700, 800, 900, and 1000.
The resulting API is a combination of the tonal palette name, ending in the
index. For example:
R.color#system_accent1_10
How is a dynamic tonal pallet generated?
A dynamic tonal palette must be generated from a single source color that should
be derived from wallpaper using
com.android.systemui.monet.ColorScheme#getSeedColors, which provides multiple
valid source colors. If none of the provided colors meet the source color
requirement, the single source color should use the value 0xFF1B6EF3.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-06-12 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-06-12 UTC."],[],[],null,["# Dynamic color\n\nMaterial You design was launched with the Android 12\nrelease and expanded with Android 13.\n\nThis page focuses on updates to the Material You logic to help you integrate\nwith richer dynamic color support.\n\nDynamic color tonal palettes\n----------------------------\n\nStarting with Android 12, the following dynamic color\ntonal palettes are supported:\n\n- [`system_accent1_0`](https://developer.android.com/reference/android/R.color#system_accent1_0)\n- [`system_accent2_0`](https://developer.android.com/reference/android/R.color#system_accent2_0)\n- [`system_accent3_0`](https://developer.android.com/reference/android/R.color#system_accent3_0)\n- [`system_neutral1_0`](https://developer.android.com/reference/android/R.color#system_neutral1_0)\n- [`system_neutral2_0`](https://developer.android.com/reference/android/R.color#system_neutral2_0))\n\nEach of them comprise of a set of 13 colors with defined various luminance\nvalues as described at\n[`R.color`](https://developer.android.com/reference/android/R.color),\nbut with undefined hue and chroma values that can be dynamically generated by\nthe Android system at runtime.\n\nTheme styles for dynamic color\n------------------------------\n\nStarting with Android 13, six different theme styles\nare supported with variations on the dynamic color algorithm that maintain\ndeveloper needs and contrast expectations. These are listed for generating the\n65 dynamic color used by apps:\n\n- `TONAL_SPOT` is a mid-vibrancy palette that uses an `system_accent3_0` color analogous to the `system_accent1_0` color (carried over from the Android 12 release and slightly adjusted).\n- `VIBRANT` is a high-vibrancy palette that harmoniously blends subtle shift between colors.\n- `EXPRESSIVE` is a high-vibrancy palette that pairs unexpected and unique accents colors together.\n- `SPRITZ` is a low-vibrancy palette that creates a soft wash between colors.\n- `RAINBOW` uses both chromatic accents and neutral surfaces to create a more subtle color experience for users.\n - This is **NOT RECOMMENDED** to be used with wallpaper-based color extraction and should instead be used with static color themes.\n- `FRUIT_SALAD` provides *two tone colors* to give users more expression.\n - This is **NOT RECOMMENDED** to be used with wallpaper-based color extraction and should instead be used with static color themes.\n\nThe system theme is driven by the same setting as it was in Android 12,\nwhich is `Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES`. For Android\n13, it requires only one key on its JSON that sends the\nsource color to generate the 65 color palettes: \n\n {\n \"android.theme.customization.system_palette\":\"746BC1\"\n }\n\nThe default theme style is `TONAL_SPOT`, but you can optionally specify one of\nthe other theme styles with an additional key with the JSON above: \n\n {\n \"android.theme.customization.system_palette\":\"746BC1\"\n \"android.theme.customization.theme_style\":\"EXPRESSIVE\"\n }\n\n| **Note:** You aren't required to expose ALL of the new theme styles in your UI, and can decide which to expose based on your user/brand needs. However, dynamic color palettes **MUST** be generated through one of these theme styles as CTS-tested by `SystemPaletteTest#testThemeStyles` and mandated by CDD.\n\nIntegrating dynamic color\n-------------------------\n\nFor guidelines on integrating dynamic color, see [Integrating Material You\nDesign](/docs/core/display/material).\n\nFrequently asked questions (FAQs)\n---------------------------------\n\n### What does the dynamic tonal palette API include?\n\n- There are five tonal palettes:\n\n - [`system_accent1`](https://developer.android.com/reference/android/R.color#system_accent1_0)\n - [`system_accent2`](https://developer.android.com/reference/android/R.color#system_accent2_0)\n - [`system_accent3`](https://developer.android.com/reference/android/R.color#system_accent3_0)\n - [`system_neutral1`](https://developer.android.com/reference/android/R.color#system_neutral1_0)\n - [`system_neutral2`](https://developer.android.com/reference/android/R.color#system_neutral2_0)\n- Each tonal palette has 13 color values ending in the indexes 0, 10, 50, 100,\n 200, 300, 400, 500, 600, 700, 800, 900, and 1000.\n\n- The resulting API is a combination of the tonal palette name, ending in the\n index. For example:\n [`R.color#system_accent1_10`](https://developer.android.com/reference/android/R.color#system_accent1_10)\n\n### How is a dynamic tonal pallet generated?\n\nA dynamic tonal palette must be generated from a single source color that should\nbe derived from wallpaper using\n`com.android.systemui.monet.ColorScheme#getSeedColors`, which provides multiple\nvalid source colors. If none of the provided colors meet the source color\nrequirement, the single source color should use the value `0xFF1B6EF3`."]]