プロダクト ニュース

Jetpack WindowManager 1.5 が安定版になりました

所要時間: 3 分
Francesco Romano
デベロッパー リレーション エンジニア、Android

Jetpack WindowManager 1.5.0 が安定版になりました。

今回のリリースでは、WindowManager の優れた適応性を基盤として、あらゆる画面サイズで美しく表示される洗練されたアダプティブ UI をさらに簡単に作成できるようになりました。Android エコシステムが成長を続ける中、ユーザーはスマートフォンや折りたたみ式デバイスから、タブレット、接続されたディスプレイ、Chromebook、駐車モードの車載ディスプレイまで、これまで以上に多様なデバイスでアプリを利用しています。

WindowManager 1.5 では、このような多様なデバイス環境に対応するための優れたツールを提供することに重点を置いています。

WindowManager 1.5 の新機能

今回の安定版リリースでは、非常に大きな画面に対応する新しいブレークポイントが導入され、アクティビティ埋め込み API が強化され、ウィンドウ指標の計算の柔軟性が向上しています。

新しいウィンドウ サイズクラス: 大と特大

1.5 の最大のアップデートは、大と特大の 2 つの新しい幅のウィンドウ サイズクラスが追加されたことです。

ウィンドウ サイズクラスは、アダプティブ レイアウトの設計と開発に役立つ、Google の公式の独自のビューポート ブレークポイントのセットです。1.5 では、一般的なタブレットを超える画面に対応するガイダンスが拡張されています。

新しい幅のブレークポイントは次のとおりです。

  • 大: 幅が 1200dp ~ 1600dp の場合
  • 特大: 幅が 1600dp 以上の場合
window_size_classes_width.png

ディスプレイの幅に基づくさまざまなウィンドウ サイズクラス。 

これらのブレークポイントが重要な理由

Android 16 QPR1 Beta 2 以降、Android は接続されたディスプレイをサポートしています。これにより、ユーザーは外部ディスプレイをデバイスに接続して、大画面のデスクトップのようなツールとして使用できます。

ADB_5350_asset.gif

スマートフォンが外部ディスプレイに接続され、外部ディスプレイにデスクトップ セッションが表示されている。 

この新機能が利用可能になったため、より大きなディスプレイに対応するための独自のガイダンスが不可欠です。

このような非常に大きな画面では、タブレットの拡大レイアウトを単純に拡大しても、必ずしも最適なユーザー エクスペリエンスが得られるとは限りません。たとえば、メール クライアントでは、拡大ウィンドウ サイズクラスで 2 つのペイン(メールボックスとメッセージ)を快適に表示できます。しかし、特大のデスクトップ モニターでは、メール クライアントで3 つまたは 4 つのペイン (メールボックス、メッセージ リスト、メッセージの全内容、カレンダー/タスクパネルなど)を同時に表示できます。

WindowManager 1.5 では、非常に大きなディスプレイ サイズに対応する公式のブレークポイントを提供することで、生産性の高い情報密度の高いデスクトップ エクスペリエンス向けに特別に設計されたレイアウトを導入するための明確なシグナルを提供します。

ウィンドウ サイズクラスは、computeWindowSizeClass() を使用して計算できます。これは、androidx.window.core.layout ライブラリ拡張関数であり、Set<WindowSizeClass> 型を拡張します。

新しいウィンドウ サイズクラスをプロジェクトに含めるには、WindowSizeClass.BREAKPOINTS_V2 セットから関数を呼び出すだけです。WindowSizeClass.BREAKPOINTS_V1

val currentWindowMetrics =

    WindowMetricsCalculator.getOrCreate()

    .computeCurrentWindowMetrics(LocalContext.current)


val sizeClass = WindowSizeClass.BREAKPOINTS_V2

    .computeWindowSizeClass(currentWindowMetrics)


アプリに十分なスペースがあることを確認したら、適切なレイアウトを適用します。

if(sizeClass.isWidthAtLeastBreakpoint(

    WindowSizeClass.WIDTH_DP_LARGE_LOWER_BOUND)){

    ...

    // window is at least 1200 dp wide


}

アダプティブ ライブラリ

Compose Material 3 Adaptive ライブラリを使用すると、ウィンドウ サイズクラスやデバイスの姿勢など、現在のウィンドウ構成に応じて自動的に適応するアダプティブ UI を作成できます。

このライブラリは、新しいブレークポイントに対応しています。バージョン 1.2(現在リリース候補段階)以降、デフォルトのペイン スキャフォールド ディレクティブ関数は、大と特大のウィンドウ幅サイズクラスをサポートしています。

新しいブレークポイントを使用するには、Gradle ビルドファイルで宣言するだけで済みます。

currentWindowAdaptiveInfo(

    supportLargeAndXLargeWidth = true)

その他の改善点

  • アクティビティ埋め込み - 自動保存と復元: WindowManager で、アクティビティ埋め込み分割の状態を自動的に保存して復元できるようになりました。これにより、プロセス再作成時にユーザーのレイアウトが保持され、より安定した一貫性のあるエクスペリエンスが実現します。デベロッパーは状態を手動で保存して復元する必要がなくなり、EmbeddingConfiguration#isAutoSaveEmbeddingState プロパティを設定するだけで自動的に保存して復元できます。
  • 拡張された WindowMetrics: Activity コンテキストだけでなく、Application コンテキストからも WindowMetrics を計算できるようになりました。これにより、アプリのさまざまな部分からウィンドウ情報にアクセスする際の柔軟性が向上します。

ご利用方法

Android プロジェクトで新しい大と特大のサイズクラスとその他の 1.5 機能の使用を開始するには、build.gradle.kts でアプリの依存関係を最新の安定版に更新します。

dependencies {
    implementation("androidx.window:window:1.5.0") 

    // or, if you're using the WindowManager testing library:

    testImplementation("androidx.window:window-testing:1.5.0")

}

WindowManager 1.5 は、Android のフォーム ファクタ全体で実行される完全なアダプティブ アプリを作成するためのもう 1 つのステップです。変更点とバグ修正の完全なリストについては、公式のリリースノートをご覧ください。

ぜひコーディングにお役立てください。

執筆者:

続きを読む