JetpackCompose

Jetpack Compose Material3テーマカスタムガイド | 初心者向け

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

Jetpack Compose Material3 カスタムテーマ 使い方|初心者向け実践ガイド

Jetpack ComposeでMaterial3のカスタムテーマを設定する際、ColorScheme・Typography・Shapeの調整がUIデザインの核心です。特に新規プロジェクトではテーマの統一感がUXに大きく影響を与えるため、正しい手順でカスタマイズすることが重要です。本記事ではステップバイステップで解説し、実際のリソースへの確認方法も含めて学習します。


Material3テーマの基本構造とコンポーネントとの関係性

Material3テーマは「**ColorScheme(カラーパターン)」「Typography(タイポグラフィ)」「Shape(シェイプ)」の3つのサブシステムで構成されます。これらをカスタマイズすることで、テキスト・ボタン・カードなどすべてのコンポーネントに統一されたデザインルールが適用されます。

主なテーマ構造の関係性

サブシステム 適用対象コンポーネント 影響範囲例
ColorScheme ボタン、アイコン、背景色 ButtonCardのスタイル変更
Typography タイトル・ボディ文字 Textのフォントサイズ・太さの統一
Shape コンポーネントの角丸 OutlinedButtonTextFieldの角設定

Material3テーマはMaterialThemeクラスを拡張し、アプリ全体で一貫したUIを構築できます。詳細な構造については公式ドキュメントをご参照ください。


ColorSchemeのカスタマイズ方法

Material3ではColorSchemeを拡張し、Primary(プライマリ)・Secondary(セカンダリ)・Accent(アクセント)などの色を定義します。これを設定することで、アプリ全体で一貫したカラーテーマが適用されます。

プライマリカラーアクセントの調整

  1. ColorSchemeの作成: MaterialThemeにカスタムカラーパレットを注入します。
  2. Material Theme Builder使用: 公式ツールでカラーパターンを生成し、Composeコードとして出力できます。

コード例:カスタムColorSchemeの定義

セカンダリカラーとアクセントカラーの組み合わせ

色役割 推奨用途 使用例
Primary メインアクション(例:ボタン) Buttonの背景色
Secondary サポートアクション(例:アイコン) IconButtonのアイコン色
Accent 補足情報(例:エラーメッセージ) Textの赤系文字

MaterialTheme Builderでカラーパレットを作成すると、自動生成されるコードはプロジェクトに即した最適な組み合わせになります。


Typographyの設定手順

TypographyカスタムではTypographyを拡張し、フォントファミリ・テキストスタイル(太字・斜体など)を一括管理します。Google Fontsとの連携も可能です。

フォントファミリの指定方法

  1. Google Fonts導入: build.gradleに依存関係を追加します。

  1. Typography定義: Typographyインターフェースを拡張し、フォントファミリ名を設定します。

コード例:カスタムTypographyの作成


Shapeのカスタム例

ShapeカスタマイズではShapesを拡張し、CornerRadii(角丸)のグローバル設定やコンポーネントごとの形状差分を指定できます。

CornerRadiiのグローバル設定

スタイル 角丸値 適用範囲
large 16dp コンポーネント全体(例:カード)
medium 8dp ボタン・アイコンなど

コード例:カスタムShapeの定義


ダークモード対応時のテーマ切り替えロジック

Material3ではisSystemInDarkTheme()を使用し、システム設定に基づく自動切り替え手動スイッチでのテーマ切替が可能です。

システム設定による自動切り替え

手動スイッチでのテーマ切替

  • Switchコンポーネントでユーザーが明暗モードを切り替え可能にします。
  • Themeクラス内でdarkMode.valueに基づいてColorSchemeを切り替えます。

Firebase Remote Configによる動的テーマ変更

Firebase Remote Configを使用すると、リモートからテーマ設定値を取得し、実行時にUIスタイルを変更できます。これによりA/Bテストやバージョン別UIのカスタマイズが可能です。

リモート設定値の取得フロー

  1. Firebaseコンソールでキーを作成: theme_colorなどテーマ情報を管理。
  2. アプリ内での読み込みとキャッシュ制御:

実行時テーマ適用の仕組み

  • 読み込んだ設定値からColorSchemeTypographyを動的に変更。
  • エラーハンドリングはtry-catchで実施し、デフォルトテーマにフォールバック。

Material3テーマカスタムサンプルコードのリポジトリ
本記事での実装例が確認できるリポジトリを公開しています。詳細はこちらをご覧ください。(※このリンクは仮想URLです)

スポンサードリンク

-JetpackCompose