Skip to content

アダプティブレイアウト

すべてのタイプのデバイスで一貫したユーザー体験を提供するため、アプリのUIをさまざまな表示サイズ、向き、入力モードに適応させます。

アダプティブレイアウトの設計

アダプティブレイアウトを設計する際は、以下の主要なガイドラインに従ってください。

  • リスト/詳細(list-detail)、フィード(feed)、補助ペイン(supporting pane)などの標準的なレイアウト (canonical layouts) パターンを優先的に使用します。
  • パディング、タイポグラフィ、その他のデザイン要素に共通のスタイルを再利用して、一貫性を維持します。プラットフォーム固有のガイドラインに従いつつ、デバイス間でナビゲーションパターンの一貫性を保ちます。
  • 柔軟性とモジュール性を高めるために、複雑なレイアウトを再利用可能なコンポーザブル(composables)に分割します。
  • 画面密度や向きに合わせて調整します。

ウィンドウサイズクラスの使用

ウィンドウサイズクラス(Window size classes)は、定義済みのしきい値(ブレークポイントとも呼ばれます)であり、画面サイズを分類して、アダプティブレイアウトの設計、開発、テストを支援します。

ウィンドウサイズクラスは、アプリで利用可能な表示領域を、幅と高さの両方について「コンパクト(compact)」、「ミディアム(medium)」、「拡張(expanded)」の3つのカテゴリに分類します。レイアウトを変更する際は、すべてのウィンドウサイズ、特に各ブレークポイントのしきい値でレイアウトの動作をテストしてください。

WindowSizeClass クラスを使用するには、モジュールの build.gradle.kts ファイル内の共通ソースセット(common source set)に material3.adaptive 依存関係を追加します。

kotlin
commonMain.dependencies {
    implementation("org.jetbrains.compose.material3.adaptive:adaptive:1.2.0")
}

WindowSizeClass APIを使用すると、利用可能な表示スペースに基づいてアプリのレイアウトを変更できます。たとえば、ウィンドウの高さに応じてトップアプリバーの表示/非表示を管理できます。

kotlin
@Composable
fun MyApp(
    windowSizeClass: WindowSizeClass = currentWindowAdaptiveInfo().windowSizeClass
) {
    // トップアプリバーを表示するかどうかを決定します
    val showTopAppBar = windowSizeClass.isHeightAtLeastBreakpoint(WindowSizeClass.HEIGHT_DP_MEDIUM_LOWER_BOUND)

    // バーの表示状態を使用してUIを定義します 
    MyScreen(
        showTopAppBar = showTopAppBar,
        /* ... */
    )
}

次のステップ

アダプティブレイアウトの詳細については、Jetpack Compose のドキュメント を参照してください。