このたび、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 以上
ディスプレイの幅に基づくさまざまなウィンドウ サイズクラス。
なぜ重要なのか
Android 16 QPR1 ベータ版 2 以降、Android は接続されたディスプレイをサポートしています。これにより、ユーザーは外部ディスプレイをデバイスに接続して、大画面のデスクトップのようなツールに変換できます。
外部ディスプレイに接続されたスマートフォン。外部ディスプレイにデスクトップ セッションが表示されている。
この新機能が利用可能になったことで、より大きなディスプレイを対象に含めるための、意見を反映したガイダンスが重要になります。
このような非常に大きなサーフェスでは、タブレットの拡張レイアウトを単に拡大するだけでは、最適なユーザー エクスペリエンスが得られないことがあります。たとえば、メール クライアントは、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 のフォーム ファクタ全体で動作する完全なアダプティブ アプリを作成するためのもう一つのステップです。変更点とバグの修正の完全なリストについては、公式のリリースノートをご覧ください。
ぜひコーディングにお役立てください。
-
サービスに関する最新情報Android でモバイル コンピューティングとデスクトップ コンピューティングの融合を促進する重要なマイルストーンとして、Android 16 QPR3 リリースで接続ディスプレイのサポートが一般提供されたことをお知らせいたします。
Francesco Romano • 所要時間: 7 分 -
サービスに関する最新情報Unity は世界中のモバイルタイトルの半数以上を支えており、第一印象が重要です。ゲーム デベロッパーにとって、スムーズで信頼性の高いプレーヤー オンボーディング エクスペリエンスは、1 日目の維持率と長期的なエンゲージメントを促進するために不可欠です。
Michelle Martin • 所要時間: 1 分 -
サービスに関する最新情報自宅での完全な没入感から、外出先での一目でわかるエクスペリエンスまで、Android XR を基盤に構築することで、空間アプリケーションのあらゆる場面でユーザーにリーチできます。Android Developer Summit で、XREAL AURA のリリースというエキサイティングなマイルストーンを達成しました。
Amy Zeppenfeld, Vinny DaSilva • 所要時間: 3 分
Android 開発に関する最新の分析情報を毎週メールでお届けします。