水たまりは希望を写している

Material You 風の ChMate テーマを作るアプリを作った【MY2ChMate】

MY2ChMate のヘッダー画像に「左矢印」と「つくった」の文字。

Material You の Dynamic Color が適用された ChMate テーマを作れるアプリ、MY2ChMate を作ったのでその宣伝と作った感想を書いていく。

開発に至った経緯

MY2ChMate のスクリーンショット。

Jetpack Compose の Material 3 が Stable になったので、なにかアプリを作ってみたいと考えていた。どうせなら最新の Android の機能に関するものが良いなと思っていたので、Google の新デザイン言語 Material You の Dynamic Color に関するアプリにした。

あと、あまり関係ないが停滞していた (?) ChMate の開発が再開されたのでその応援という意味もある。

なにをするアプリなのか

ChMate のスクリーンショット。

MY2ChMate は、現在のデバイスの Dynamic Color の配色に沿った ChMate のスキンを生成する。Dynamic Color は、Android 12 以降の機能で、設定されている壁紙の色を抽出し、UI の色にする機能。この色をアプリで取得して、ChMate のスキンを生成している。

故に、Android 12 以降でしかアプリが使えないようになっている。

学んだこと

Material 3 ライブラリが正式版になったので、Alpha リリースのときの知識が通用しないところもあった。基本的にはウィジェットをポンポン置いていくだけで Material You なアプリを作れるが、より「それ」っぽくするには手動での配色変更も必要だった。

また、Android 12 以降で追加された要素にも対応することにした、Themed IconSplashScreen API などが当てはまる。これらに対応するだけで、モダンな Android アプリ感が増す。12 未満の Android に対応しないので、これらの実装も楽だった。

テーマの生成に関して、アプリ固有ストレージの使い方とか、ZIP ファイルの作り方とか、ダウンロードフォルダへの保存などを初めて実装した。難しい要素はないけど、ZIP ファイルを作るというのはふつうの Android アプリではしないことなので新鮮だった。

これからどうするか

とりあえずテーマの生成ができるようになっただけなので、これから細かくカスタマイズできるようにしていきたい。あと星の色とかをまだ設定できていない (Dynamic Color にそんな色数がない) ので、その辺りをどうするか悩んでいる。

個人的にやりたいのが、アイコン画像の同梱。Material Symbols から適したアイコンを引っ張ってくる、というもの。Material You では微妙にアイコンに色が付いてると思うので、それも再現できたらなと考えている。SVG に色をつけてから PNG としてレンダリングする処理が必要になってきそう。

ぜひ ChMate をお使いの方は使ってみてほしい。