Android 12 のマテリアル ユー テーマ システムは開発者によって再作成されました

ProtonAOSP ROM の開発者である kdrag0n は、Android 12 の新しい壁紙ベースのテーマ システムである「monet」の独自バージョンをリリースしました。

マテリアル・ユーの壁紙ベースのテーマ・システム、コード名「monet」がついに稼働開始 Android 12 ベータ 2. テーマ システムは、壁紙の主要な配色に基づいてカラー パレットを作成し、それらをクイック設定タイル、ロック画面、設定、ポップアップ、アプリに適用します。 ただし、現在の実装では、 テーマはシステム UI の一部です そして システムアプリを選択する. Google がまだマテリアル ユーに関するドキュメントを公開していないため、ほとんどのサードパーティ アプリはこの動的なテーマをサポートしていません。 Google がいつマテリアル ユーでリソースやライブラリを公開するかはわかりませんが、ProtonAOSP ROM の開発者である Danny Lin (kdrag0n) は、「monet」に基づいた独自のテーマ エンジンを発表しました。

kdrag0n のテーマエンジン 「monet」と同じように機能し、Android 12 および一部の古い Android バージョンを実行しているすべてのデバイスに Pixel 専用の動的テーマを公開します。 kdrag0n は、初期の Android 12 開発者プレビュー ビルドで最初に「monet」が動作するようにした開発者です。 それ以来、彼は Google の実装をリバース エンジニアリングし、特に Google の SystemUI チームのメンバーにフィードバックを提供しています。 ジェームズ・オレアリー (彼はGoogleで「monet」を開発したチームの一員のようです)。

kdrag0n 氏によると、彼の実装では Google や Android 12 のコードや API は一切使用されていないため、彼のモデルが使用される際に Android 12 を実行しているデバイスに依存することはありません。 kdrag0n のテーマ エンジンは、マテリアル ユーザーのカラー ターゲットに従います。 これらのターゲットは、 「@bjornornorn の Oklab 知覚色空間でカラフルさと色相を調整して再着色しました。 結果の色は、Oklab 空間の色域交差を使用して sRGB に色域マッピングされます。」 ユーザーは、カラフルさを変更して、正確な色合いよりもカラフルさを優先させることもできます。

kdrag0n のテーマ エンジンは MIT ライセンスの下でオープンソースであり、カスタム ROM 開発者 (さらには OEM) が希望に応じて実装できます。 実際、開発者自身の プロトンAOSP ROM は、Android 12 のソース コードが公開されたときに最初に実装されるものの 1 つになります。 カスタム ROM 開発者であれば、厳選することができます これらのコミット そしてそれらをビルドにマージします。

開発者は Jetpack Compose ライブラリと Flutter ライブラリにも取り組んでおり、これにより Android 11 用に構築されたアプリでも動的なカラーをサポートできるようになります。 古い Android バージョンをターゲットとするアプリでは、 リスナーを登録する 壁紙の色が変わったときに通知を受け取るため — kdrag0n のコードは、新しい壁紙の色に基づいてテーマを生成することを目的としています。

Android 11 をターゲットとするアプリで動作するモデルの例として、開発者は、90fps でフレームごとにテーマを変更するアプリをデモンストレーションするビデオを共有しました。 このデモは実行できることの単なる一例であり、示されているとおりに正確に再作成することはお勧めできません。

これはパフォーマンスとバッテリーに大きな影響を与える可能性がありますが、開発者のPixel 4は、よりシンプルなビューのためにテーマの変更を90fpsでレンダリングできます。 開発者によると、Jetpack Compose はパフォーマンスがあまり最適化されていないため、Flutter ライブラリの方が優れている可能性があります。 いずれにせよ、エンジンがテーマを生成するのにかかる時間はわずか 0.05 ミリ秒ですが、それでもフレームごとに UI テーマを変更するとパフォーマンスに負担がかかります。


Mishaal Rahman 氏がこの記事に寄稿しました。