サービスに関する最新情報

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

所要時間: 2 分
Francesco Romano のプロフィールを表示
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 では、一般的なタブレットよりも大きな画面を対象に、このガイダンスを拡張しています。

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

  • 大: 幅が 1,200 ~ 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 では、非常に大きなディスプレイ サイズに対応する公式のブレークポイントが提供されるため、生産性が高く、情報密度の高いデスクトップ エクスペリエンス向けに特別に設計されたレイアウトを導入するための明確なシグナルが得られます。

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

プロジェクトに新しいウィンドウ サイズクラスを含めるには、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(現在リリース候補版の段階)以降、デフォルトのペイン スキャフォールド ディレクティブ関数は、大および特大のウィンドウ幅サイズクラスをサポートしています。

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

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

作成者:
続きを読む