プロダクト ニュース

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 の最大のアップデートは、Large と Extra-large の 2 つの新しい幅ウィンドウ サイズクラスが追加されたことです。

ウィンドウ サイズクラスは、アダプティブ レイアウトの設計と開発に役立つ、独自のビューポート ブレークポイントの公式セットです。1.5 では、このガイダンスを一般的なタブレット以外の画面にも拡大しています。

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

  • 大: 幅が 1,200 dp ~ 1,600 dp の場合
  • 特大: 幅が 1,600 dp 以上の場合
window_size_classes_width.png

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

なぜ重要なのか

Android 16 QPR1 ベータ版 2 以降、Android は接続済みディスプレイをサポートしています。これにより、ユーザーは外部ディスプレイをデバイスに接続して、大画面のデスクトップのようなツールに変えることができます。

ADB_5350_asset.gif

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

この新機能が利用可能になったことで、大画面を含めるための意見の強いガイダンスが重要になります。

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

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

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

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

  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(現在はリリース候補段階)以降、デフォルトのペイン スキャフォールド ディレクティブ関数は、Large と Extra-large のウィンドウ幅サイズクラスをサポートしています。

新しいブレークポイントを使用することを 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 のフォーム ファクタ全体で実行される完全なアダプティブ アプリを作成するためのさらなる一歩です。変更点とバグの修正の完全なリストについては、公式のリリースノートをご覧ください。

よろしくお願いいたします。

作成者:

続きを読む