*iroi*

mechairoi の Blog

Material Color Utilitiesの9つのDynamic Scheme

github.com

Material Color UtilitiesはMaterial 3のカラーシステムに関するアルゴリズムやユーティリティを含むライブラリです。 HCT色空間や 画像から代表色を抽出するquantizeなど様々なコンポーネントを含んでいます。最近リリースされたv0.3.0 *1で非推奨になったSchemeの代替として用意されているDynamic Schemeが面白かったので紹介します。

Dynamic Schemeはコンテンツから抽出した色や指定した色、コントラストレベル、variantなどのいくつかのパラメータからのカラースキーマを生成する仕組みです*2。 ライブラリには9つのvariantが用意されていて、例えばAndroidのMaterial Youのデフォルトと同じにするならSchemeTonalSpotというvariantを使います。詳しくはDynamic Schemeのドキュメントを参照。

それぞれのパラメータがどのような影響を与えるのか理解しやすいように、インタラクティブにパラメータを変更してカラースキーマを確認できるようにしてみました。

https://codepen.io/mechairoi/full/mdodrJj

シードカラーやコントラストレベルなどのパラメータを固定して、variantを切り替えると下のようになります。

グレースケールに近いものもあったりして面白いですね。最後に各variantの説明をソースコードから引用します。

SchemeContent

A scheme that places the source color in Scheme.primaryContainer.

Primary Container is the source color, adjusted for color relativity. It maintains constant appearance in light mode and dark mode. This adds ~5 tone in light mode, and subtracts ~5 tone in dark mode. Tertiary Container is the complement to the source color, using TemperatureCache. It also maintains constant appearance.

SchemeExpressive

A Dynamic Color theme that is intentionally detached from the source color.

SchemeFidelity

A scheme that places the source color in Scheme.primaryContainer.

Primary Container is the source color, adjusted for color relativity. It maintains constant appearance in light mode and dark mode. This adds ~5 tone in light mode, and subtracts ~5 tone in dark mode. Tertiary Container is the complement to the source color, using TemperatureCache. It also maintains constant appearance.

SchemeFruitSalad

A playful theme - the source color's hue does not appear in the theme.

SchemeMonochrome

A Dynamic Color theme that is grayscale.

SchemeNeutral

A Dynamic Color theme that is near grayscale.

SchemeRainbow

A playful theme - the source color's hue does not appear in the theme.

SchemeTonalSpot

A Dynamic Color theme with low to medium colorfulness and a Tertiary TonalPalette with a hue related to the source color.

The default Material You theme on Android 12 and 13.

SchemeVibrant

A Dynamic Color theme that maxes out colorfulness at each position in the Primary Tonal Palette.

*1:TypeScript 版のバージョン

*2: variant を使わず複数の色を指定する方法もあります