WindowManager

アプリ デベロッパーは Jetpack WindowManager ライブラリを使用して、新しいデバイスのフォーム ファクタとマルチウィンドウ環境をサポートできます。最初のリリースは折りたたみ式デバイスをターゲットにしていますが、今後のバージョンではより多くのディスプレイ タイプとウィンドウ機能に対応する予定です。
最新の更新 安定版リリース リリース候補版 ベータ版リリース アルファ版リリース
2024 年 10 月 16 日 1.3.0 - - 1.4.0-alpha05

依存関係の宣言

Window Manager への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。

アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。

Groovy

dependencies {
    implementation "androidx.window:window:1.3.0"

    // For Java-friendly APIs to register and unregister callbacks
    implementation "androidx.window:window-java:1.3.0"

    // For RxJava2 integration
    implementation "androidx.window:window-rxjava2:1.3.0"

    // For RxJava3 integration
    implementation "androidx.window:window-rxjava3:1.3.0"

    // For testing
    implementation "androidx.window:window-testing:1.3.0"
}

Kotlin

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

    // For Java-friendly APIs to register and unregister callbacks
    implementation("androidx.window:window-java:1.3.0")

    // For RxJava2 integration
    implementation("androidx.window:window-rxjava2:1.3.0")

    // For RxJava3 integration
    implementation("androidx.window:window-rxjava3:1.3.0")

    // For testing
    implementation("androidx.window:window-testing:1.3.0")
}

フィードバック

お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。

新しい問題を報告する

詳細については、Issue Tracker のドキュメントをご覧ください。

バージョン 1.4

バージョン 1.4.0-alpha05

2024 年 10 月 16 日

androidx.window:window-*:1.4.0-alpha05 がリリースされました。バージョン 1.4.0-alpha05 には、これらの commit が含まれています。

新機能

  • WindowMetrics から widthDpheightDp を取得する便利な関数を追加します。

API の変更

  • widthDpheightDpWindowMetrics に追加します。(Ide026
  • 試験運用版の WindowInsets API を削除しました。(I68a71
  • 境界チェック メソッド名を isAtLeast に更新しました。(Ib0ab7

バージョン 1.4.0-alpha04

2024 年 10 月 2 日

androidx.window:window-*:1.4.0-alpha04 がリリースされました。バージョン 1.4.0-alpha04 に含まれる commit はこちらをご覧ください。

API の変更

  • WindowMetrics から WindowSizeClass を計算するメソッドを追加しました。(874dba
  • わかりやすくするため、WindowSizeClass メソッドを containsWidthDpcontainsHeightDpcontainsWindowSizeDp に変更しました。(fa760d
  • WindowAreaController を抽象基底クラスに変換。(I90893

バグの修正

  • テスト FoldingFeature の作成時に相対境界のサポートを追加しました。(2e6b3e
  • WindowSizeClass を選択する際の一般的なバグを修正しました。

バージョン 1.4.0-alpha03

2024 年 9 月 18 日

androidx.window:window-*:1.4.0-alpha03 がリリースされました。バージョン 1.4.0-alpha03 には、これらの commit が含まれています。

新機能

  • WindowMetrics から WindowSizeClass を取得するユーティリティ メソッドを追加しました。(I83f1f
  • isAtLeastcontainsBreakpoint に変更しました。(I85b47
  • 浮動小数点数を使用して computeWindowSizeClass にオーバーロードを追加。(I3dcb2b/364677934b/364677802b/364680886

バグの修正

  • デフォルトの WindowSizeClass ブレークポイント セットに不足しているブレークポイントを追加。
  • 一部のケースでコンパクト ディメンションが正しく選択されないバグを修正しました。

バージョン 1.4.0-alpha02

2024 年 9 月 4 日

androidx.window:window-*:1.4.0-alpha02 がリリースされました。バージョン 1.4.0-alpha02 に含まれる commit はこちらをご覧ください。

新機能

カスタム WindowSizeClass のサポートを追加しました。

  • デベロッパーが独自の WindowSizeClass を使用できるように、WindowSizeClass のコンストラクタを開きました。
  • isAtLeast ユーティリティ メソッドを追加して、デベロッパーがさまざまな WindowSizeClass 値を処理できるようにしました。
  • Set<WindowSizeClass> に拡張関数を追加して、Set から最適な一致を計算します。
  • Android 推奨のブレークポイントの定数を追加しました。
  • Android で推奨されるブレークポイントに対応するブレークポイント セットを追加します。

API の変更

  • WindowSizeClass の境界メソッド名を更新しました。(If89a6
  • WindowSizeClass API を更新し、将来の新しいブレークポイント値の追加をサポートしました。絶対的な上限ではなく下限を使用します。WindowSizeClass を処理する際には、下限チェックを使用することをおすすめします。既存の WindowWidthSizeClassWindowHeightSizeClass は、今後の開発がないため非推奨となります。(I014ce

バージョン 1.4.0-alpha01

2024 年 8 月 7 日

androidx.window:window-*:1.4.0-alpha01 がリリースされました。バージョン 1.4.0-alpha01 には、これらの commit が含まれています。

新機能

  • アクティビティ スタックの固定を使用すると、アプリは 1 つのコンテナにコンテンツを固定し、そのナビゲーションを他のコンテナから分離できます。
  • インタラクティブ分割線を使用すると、分割表示の 2 つのアクティビティの間に、固定またはドラッグ可能な分割線を表示できます。
  • 全画面表示ダイアログを暗くする機能を使用すると、アプリでダイアログの暗くする領域を指定できます。タスク ウィンドウ全体を暗くするか、ダイアログを表示するコンテナのみを暗くするかを選択できます。
  • 埋め込みアクティビティ ウィンドウ情報コールバックを使用すると、アプリは埋め込みアクティビティ ウィンドウの更新を継続的に受け取ることができます。
  • アニメーションの背景を埋め込むことで、アプリでアニメーションの背景を指定できるため、ActivityEmbedding を使用する際の遷移アニメーションの品質が向上します。
  • ActivityStack の管理の改善により、ActivityEmbedding を使用するときにアプリで ActivityStacks をより細かく制御できるようになりました。以下に例を示します。
  • 指定された ActivityStack にアクティビティを起動する
  • ActivityStack の終了

API の変更

  • 新しい API WindowInfoTracker#supportedPostures:

    • デバイスが折りたたみ式デバイスのテーブルトップ モードをサポートしているかどうかを判断する API。WindowAreaSessionPresenter#getWindow を追加
  • ActivityStack 固定をサポートする API を追加しました。

    • SplitPinRule クラス
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • API を追加してインタラクティブな分割線を有効にして構成する

    • DividerAttributes クラス
    • SplitAttributes.Builder#setDividerAttributes
  • ダイアログの EmbeddingConfigurationDimAreaBehavior を設定する API を追加

    • EmbeddingConfiguration クラス
    • DimAreaBehavior クラス
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • 埋め込まれたアクティビティ ウィンドウ情報の更新を受信する API を追加しました

    • EmbeddedActivityWindowInfo クラス
    • ActivityEmbeddingController#embeddedActivityWindowInfo
  • 埋め込みアニメーションの背景を設定する API を追加

    • EmbeddingAnimationBackground
    • SplitAttributes.Builder#setAnimationBackground
  • ActivityStacks を完了する API を追加

    • ActivityEmbeddingController#finishActivityStacks
  • 起動 ActivityStack を設定する API を追加しました

    • ActivityEmbeddingOptions#setLaunchingActivityStack
  • 次の API は安定版であり、試験運用版ではなくなりました。

    • ActivityEmbeddingController#invalidateVisibleActivityStacks(SplitController#invalidateTopVisibleSplitAttributes から移動)
    • ActivityEmbeddingController#getActivityStack
    • SplitController#updateSplitAttributes
  • 1.4 の API を追加しました。(I56774

バグの修正

  • セッションがアクティブなときに ACTIVE ではなく UNAVAILABLE が返されるという、特定のデバイスのバグを修正しました。
  • API のサポートが不安定であるため、vendorApiLevel が 2 のデバイスでの transferActivityToWindowArea のサポートを削除しました。
  • アクティビティの埋め込みのドラッグ可能な分割線で、ドラッグして全画面表示を有効にする API を導入しました。(I645c9
  • アプリが SplitAttributes のアニメーション パラメータを使用して ActivityEmbedding アニメーションを無効にできるようにしました。(Idc01a
  • 新しいプラットフォーム API へのアクセスの手動アウトラインを削除しました。これは、AGP 7.3 以降(R8 バージョン 3.3 など)で R8 を使用している場合、および AGP 8.1 以降(D8 バージョン 8.1 など)を使用しているすべてのビルドで、API モデリングによって自動的に行われるためです。AGP を使用していないクライアントは、D8 バージョン 8.1 以降にアップデートすることをおすすめします。詳しくは、こちらの記事をご覧ください。(Ia60e0b/345472586
  • 拡張機能が SplitAttributes のアニメーション パラメータを取得できるようにし、デバイスがアニメーション遷移に使用できるようにします。(Iede00
  • 重ねて表示 API を非表示にする(Ic4251
  • 分割の固定またはドラッグ可能な分割線を構成する API を導入しました。(Ia7a78
  • WindowMetrics に密度を追加しました。(Id6723
  • SupportedPostures を取得する API を追加しました。(If557a
  • 試験運用版 API から setLaunchingActivityStack を削除しました。(I191cf
  • ActivityEmbeddingController#embeddedActivityWindowInfo を導入しました。(I24312
  • #getToken を非推奨にし、#getActivityStackToken を追加しました。(Ie0471
  • embeddedActivityWindowInfo Flow API のコールバック アダプタを導入(Ida77f
  • overlayInfo flow API のコールバック アダプターを追加しました。(I7264f
  • WindowSdkExtensionsRule を導入して、テスト用に extensionsVersion をオーバーライドします。(Ifb928
  • - ActivityOptionsCompat の使用と互換性を持たせるため、#setLaunchingActivityStack を Bundle に移行。
    • ユーザーは ActvityOptions 自体ではなく activityOptions.toBundle を渡す必要があります。
    • #setLaunchingActivityStack(Activity) を削除しました。ActivityEmbeddingController#getActivityStac(Activity) を使用して ActivityStack を取得し、ActivityStack#setLaunchingActivityStack に渡すように移行する必要があります。(Ie0ccc
  • - WM Jetpack と拡張機能の間で通信するための識別子として ActivityStack.TokenSpltInfo.Token を導入。
    • IBinder ではなくトークンを取得/返す API を非推奨/置き換えました。(I12b24
  • - ActivityEmbeddingController#invalidateVisibleActivityStacks を導入
    • 機能が #invalidateVisibleActivityStacks に統合されたため、SplitController#invalidateTopVisibleSplitAttributes を削除しました。(I02ef5
  • - 埋め込み構成を設定するための API を追加。(I59a4a
  • - 固定/固定解除のトップ ActivityStack androidx.Window API を追加
    • 上部の ActivityStack の固定/固定解除を許可するようにデモアプリを更新しました。(I24dd3
  • #finishActivityStacksActivityEmbeddingOptions を再び追加しました。(Ic1ab3
  • 不安定な API を削除しました。(Ibc534b/302380585

バージョン 1.3

バージョン 1.3.0

2024 年 5 月 29 日

androidx.window:window-*:1.3.0 がリリースされました。バージョン 1.3.0 に含まれる commit は次のとおりです。

1.2.0 以降の重要な変更

  • Kotlin マルチプラットフォームでのウィンドウ サイズクラスのサポート。

バージョン 1.3.0-rc01

2024 年 5 月 14 日

WindowManager Jetpack 1.3 では、WindowSizeClass 機能の Kotlin マルチプラットフォーム サポートと、複数のバグ修正が導入されています。

androidx.window:window-*:1.3.0-rc01 がリリースされました。バージョン 1.3.0-rc01 に含まれる commit はこちらをご覧ください。

バージョン 1.3.0-beta02

2024 年 5 月 1 日

androidx.window:window-*:1.3.0-beta02 がリリースされました。バージョン 1.3.0-beta02 に含まれる commit はこちらをご覧ください。

API の変更

  • カスタム WindowSizeClass の作成と使用のサポートを削除。(Id1143

バグの修正

  • 特定のデバイス実装で ProGuard によって一部のファイルが削除された場合に発生する KotlinReflectionInternalError を修正しました。(I01b02

バージョン 1.3.0-beta01

2024 年 4 月 3 日

androidx.window:window-*:1.3.0-beta01 がリリースされました。バージョン 1.3.0-beta01 には、これらの commit が含まれています。

バージョン 1.3.0-alpha03

2024 年 3 月 6 日

androidx.window:window-*:1.3.0-alpha03 がリリースされました。バージョン 1.3.0-alpha03 には、これらの commit が含まれています。

API の変更

  • WindowSizeClassUtil をより焦点を絞ったメソッドに分割します。(Ie9292
  • WindowSizeClass#compute を復元(I21355b/324293374

バグの修正

  • 指定されたコンテキストが正しくアンラップされない場合に発生するクラッシュを修正しました。(94d10ceb/318787482

バージョン 1.3.0-alpha02

2024 年 2 月 7 日

androidx.window:window-*:1.3.0-alpha02 がリリースされました。バージョン 1.3.0-alpha02 に含まれる commit については、こちらをご覧ください

新機能

  • Window Size Class API の API サーフェスが更新され、独自のサイズクラスを使用するデベロッパーの柔軟性が向上しました。

API の変更

  • 幅セレクタに高さの制約を追加します。(I23393
  • セットから WindowSizeClass を選択するためのユーティリティ関数を追加します。デベロッパーが独自のセレクタを記述できるように、試験運用版のスコアリング関数を追加しました。セレクタ拡張関数を追加して、特定の境界内で最も広い WindowSizeClass を選択します。(I0c944
  • カスタム ブレークポイントを追加できるように、WindowSizeClass コンストラクタを開きます。(Ic1ff3
  • 幅、高さ、密度からサイズクラスを作成する便利な関数を追加しました。(If67f4

バグの修正

  • 浮動小数点値が 0 に切り捨てられたときの例外を修正。(272ffac

バージョン 1.3.0-alpha01

2023 年 11 月 15 日

androidx.window:window-*:1.3.0-alpha01 がリリースされました。バージョン 1.3.0-alpha01 に含まれる commit については、こちらをご覧ください

新機能

  • 背面ディスプレイにアクセスするための試験運用版のウィンドウ API を公開しました。
  • FoldingFeature の作成用テスト API が安定版になりました。
  • 偽の ActivityEmbedding 値を設定するテスト API が安定しました。
  • WindowLayoutInfoPublisherRuleUiContext から値を取得するときにオーバーライドを報告するようになりました。
  • WindowInfoTracker は、UiContext パラメータに折りたたみ特徴データを報告します。
  • デバイスの拡張機能のバージョンを公開します。
  • ユーザーによるアプリごとのオーバーライド用の WindowProperties 定数:
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE - アプリがユーザー向けのアスペクト比の互換性のオーバーライドをオプトアウトしたことをシステムに通知します。
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE - アプリがユーザーのアスペクト比の互換性のオーバーライド設定の全画面オプションをオプトアウトしたことをシステムに通知します。

バージョン 1.2

バージョン 1.2.0

2023 年 11 月 15 日

androidx.window:window-*:1.2.0 がリリースされました。バージョン 1.2.0 に含まれる commit については、こちらをご覧ください

1.1.0 以降の重要な変更

  • 背面ディスプレイにアクセスするための試験運用版のウィンドウ API を公開しました。
  • FoldingFeature の作成用テスト API が安定版になりました。
  • 偽の ActivityEmbedding 値を設定するテスト API が安定しました。
  • WindowLayoutInfoPublisherRuleUiContext から値を取得するときにオーバーライドを報告するようになりました。
  • WindowInfoTracker は、UiContext パラメータに折りたたみ特徴データを報告します。
  • デバイスの拡張機能のバージョンを公開します。

バージョン 1.2.0-rc01

2023 年 11 月 1 日

androidx.window:window-*:1.2.0-rc01 がリリースされました。バージョン 1.2.0-rc01 に含まれる commit については、こちらをご覧ください

新機能

  • 背面ディスプレイにアクセスするための試験運用版のウィンドウ API を公開しました。
  • FoldingFeature の作成用テスト API が安定版になりました。
  • 偽の ActivityEmbedding 値を設定するテスト API が安定しました。
  • WindowLayoutInfoPublisherRuleUiContext から値を取得するときにオーバーライドを報告するようになりました。
  • WindowInfoTracker は、UiContext パラメータに折りたたみ特徴データを報告します。
  • デバイスの拡張機能のバージョンを公開します。

バージョン 1.2.0-beta04

2023 年 10 月 18 日

androidx.window:window-*:1.2.0-beta04 がリリースされました。バージョン 1.2.0-beta04 に含まれる commit については、こちらをご覧ください

API の変更

バージョン 1.2.0-beta03

2023 年 9 月 20 日

androidx.window:window-*:1.2.0-beta03 がリリースされました。バージョン 1.2.0-beta03 に含まれる commit については、こちらをご覧ください

新機能

  • 正しく機能するために特定のバージョンの拡張機能を必要とする API に RequiresApi チェックを追加しました。
  • デバイス上の拡張機能のバージョンを公開する API を追加します。

API の変更

  • 公開 API で必要なウィンドウ SDK 拡張機能のバージョンにアノテーションを付けました。
    • アクティビティの埋め込みコンポーネントの isXXXSupported を削除。(Ie3dae
  • WindowSdkExtensions を導入して、デバイスの拡張機能のバージョンを報告します。
    • RequiresWindowSdkExtension を導入して、必要な最小拡張機能のバージョンにアノテーションを付けます。(I05fd4
  • WindowAreaInfo#getCapability を null を許容しない型にします。(I17048

バージョン 1.2.0-beta01

2023 年 7 月 26 日

androidx.window:window-*:1.2.0-beta01 がリリースされました。バージョン 1.2.0-beta01 に含まれる commit については、こちらをご覧ください

新機能

  • 背面ディスプレイにアクセスするための試験運用版のウィンドウ API を公開しました。
  • FoldingFeature の作成用テスト API が安定版になりました。
  • 偽の ActivityEmbedding 値を設定するテスト API が安定しました。
  • WindowLayoutInfoPublisherRuleUiContext から値を取得するときにオーバーライドを報告するようになりました。
  • WindowInfoTracker は、UiContext パラメータに折りたたみ特徴データを報告します。

API の変更

  • WindowArea API を試験運用版としてマークし、1.3 の安定版リリースで API の変更を継続できるようにしました。(I857f5
  • API ファイルを更新して、互換性抑制のアノテーションを付けました。(I8e87ab/287516207

バージョン 1.2.0-alpha03

2023 年 6 月 21 日

androidx.window:window-*:1.2.0-alpha03 がリリースされました。バージョン 1.2.0-alpha03 に含まれる commit については、こちらをご覧ください

新機能

  • 非推奨の API を API サーフェスから削除しました。
  • 同時表示をサポートする API を追加しました。
  • 強制サイズ変更のオーバーライドをオプトアウトするプロパティを追加。
  • 最小アスペクト比のオーバーライドをオプトアウトするプロパティを追加。
  • ActivityEmbeddingRule を安定化させて、アクティビティ埋め込みに関する単体テストをサポート。

API の変更

  • 非推奨の API を削除しました。(I18d39
  • 同時表示のサポートを追加しました。(Ifcbb0

バグの修正

  • 強制サイズ変更のオーバーライドのオプトアウト互換プロパティを追加(Ie7ab1
  • 拡張機能のインターフェースから SESSION_STATE_CONTENT_INVISIBLE を削除しました。(I6ed19
  • ActivityEmbeddingRule を安定化させ、アクティビティの埋め込みに関する単体テストをサポートしました。(I8d6b6
  • 最小アスペクト比のオーバーライドのオプトアウト互換性プロパティを追加。(I66390
  • サポートが終了した WindowArea API を削除しました。(Ieb67c
  • 向きリクエスト ループ プロパティの名前を PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED に変更しました。(Ie2fbd
  • ウィンドウ領域セッション定数名を更新しました(I83675
  • 検出された場合に画面の向きのリクエスト ループを無視するオプトアウトの互換性プロパティを追加(I0a7a2
  • 機能がすでに有効であることを示す WindowAreaComponent#STATUS_ACTIVE を追加します。(I62bc3
  • RearDisplayPresentationMode API を追加しました。(I0401c
  • 安定版の背景色 API を削除しました。(I34c3e
  • Window Area API を非表示にしました。(I39de0
  • SplitControllerSplitInfo をオーバーライドするメソッドを追加しました。SplitInfoActivityStack の double を作成するテストメソッドを追加しました。(Icd69f
  • ActivityRule.Builder のタグを省略可能にしました。(Ib0b44
  • RatioSplitTypeExpandContainersSplitHingeSplitType を削除しました。SplitType になりました。
    • #splitEqually()#expandContainers()#splitByHinge を定数 SplitType SPLIT_TYPE_EQUALSPLIT_TYPE_EXPANDSPLIT_TYPE_HINGE に置き換えました
    • ヒンジ分割タイプのフォールバック タイプを設定する機能を削除しました。現在のデバイスまたはウィンドウの状態が原因でヒンジ分割タイプを適用できない場合は、親タスクコンテナを均等に分割します。SplitController#setSplitAttributesCalculator を使用して、フォールバック分割タイプをカスタマイズします。(Ifcc59
  • add/removeSplitCallback のサポートを終了
    • add/removeSplitCallbackSplitControllerCallbackAdapter に移動
    • SplitInfo リストを取得するための Flow サポートを追加しました。(I7f1b6
  • ActivityEmbeddingController のテストルールを追加しました。(I42e9b
  • ActivityOptionsCompat の名前を ActivityEmbeddingOptions に変更しました。(I89301
  • アクティビティの埋め込みが利用可能かどうかを示す splitSupportStatus を追加しました。(I10024
  • SplitAttributes.BackgroundColor を導入して、DEFAULT 値をより適切に表します。不透明でないアニメーションの背景色はサポートされていないため、不透明でない色はデフォルトとして扱われ、現在のテーマのウィンドウの背景色が使用されることを明確にします。(Ic6b95
  • alwaysAllow()alwaysDisallow()ALWAYS_ALLOWALWAYS_DISALLOW に置き換えました。(I3057b
  • SplitRuleSplitAttributesSplitAttributesCalculator の API を追加しました。(I92d23
  • TestActivityStack を追加して、テスト用の ActivityStack を作成。
    • TestSplitInfo を追加して、テスト用の SplitInfo を作成します。(I8e779
  • デベロッパーがカスタマイズした SplitAttributesCalculator を検証できるように、偽の SplitAttributesCalculatorParams を作成する方法を追加しました(Id4a6e
  • WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context) を追加しました。(I66c7f

バージョン 1.2.0-alpha02

2023 年 6 月 7 日

androidx.window:window-*:1.2.0-alpha02 がリリースされました。バージョン 1.2.0-alpha02 に含まれる commit については、こちらをご覧ください

新機能

  • 指定されていない折りたたみ機能の定数を持つようにテスト API を更新しました。
  • WindowLayoutInfoPublishRule でオーバーライドすると、コンテキストベースの API を含む windowLayoutInfo のすべての値がオーバーライドされます。

API の変更

  • 未指定の中央折りたたみ機能の定数を追加。(I7530c

バグの修正

  • Context ベースの WindowLayoutInfo のオーバーライドをサポートするように WindowLayoutInfoPublishRule を更新しました。(I2037a

バージョン 1.2.0-alpha01

2023 年 5 月 24 日

androidx.window:window-*:1.2.0-alpha01 がリリースされました。バージョン 1.2.0-alpha01 に含まれる commit については、こちらをご覧ください

新機能

アクティビティ埋め込みと WindowLayoutInfoTracker に関する API のテスト安定化。ActivityEmbeddingRule が安定版に昇格しました。WindowMetricsCalculatorRule が安定版に昇格しました。テスト用の FoldingFeature を作成するユーティリティ関数が安定版に昇格しました。

API の変更

  • ActivityEmbeddingRule を安定化させ、アクティビティの埋め込みに関する単体テストをサポートしました。(I8d6b6
  • WindowMetrisCalculatorTestRule は安定しており、JVM テストのスタブ指標を許可します。正確な結果を得るには、エミュレータを使用することをおすすめします。
  • JVM テストをサポートするように WindowLayoutInfo のテスト API を安定化しました。(Ie036e
  • テスト用折りたたみ機能の値に IntRange を追加します。(I69f7d

バージョン 1.1

バージョン 1.1.0

2023 年 6 月 7 日

androidx.window:window-*:1.1.0 がリリースされました。バージョン 1.1.0 に含まれる commit については、こちらをご覧ください

1.0.0 以降の重要な変更

アクティビティのエンベディング

  • アプリ マニフェストの <application> タグのブール値プロパティとして PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED を追加しました。
  • isSplitSupported を非推奨にして splitSupportStatus に置き換え、分割機能を使用できない理由についてより詳細な情報を提供できるようにしました。
  • splitSupportStatus プロパティの状態定数を提供する SplitController.SplitSupportStatus ネストされたクラスを追加しました。
  • SplitController を複数のモジュールにリファクタリングしました。
    • Activity または ActivityStack 関連の API 用の ActivityEmbeddingController モジュール。
    • isActivityEmbeddedSplitController から ActivityEmbeddingController に移動しました。
    • EmbeddingRule 関連オペレーション用の RuleController モジュール:
    • SplitController API を削除しました。
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • RuleController API を追加しました。
    • addRule() - 同じタグを持つルールを追加または更新します。
    • removeRule() - 登録済みルールのコレクションからルールを削除します。
    • setRules() - ルールのコレクションを設定します。
    • clearRules() - 登録されているすべてのルールを削除します。
    • parseRules() - XML ルール定義からルールを解析します。
  • すべてのモジュールで、#getInstance() メソッドによってコンテキストを初期化する必要があります。以下に例を示します。
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • ディスプレイのアスペクト比に関連する列挙型のような動作定数を定義する EmbeddingAspectRatio クラスを追加しました。
  • 分割レイアウトを定義する SplitAttributes クラスを追加しました。
  • 分割レイアウトをカスタマイズするための SplitAttributes 計算関数を SplitController に追加しました。
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(): SplitAttributesCalculator API がデバイスでサポートされているかどうかを確認します。
  • EmbeddingRule#tag フィールドを追加しました。
  • SplitRule の API の更新:
    • defaultSplitAttributes を追加 - 分割のデフォルトの分割レイアウトを定義します。splitRatiolayoutDirection に代わるものです。
    • XML プロパティ splitRatiosplitLayoutDirection の翻訳を defaultSplitAttributes に追加しました。
    • 最小サイズの定義を変更し、ピクセルの代わりに密度非依存ピクセル(dp)を使用するようにしました。
    • デフォルト値 600dp の minHeightDp を追加しました。
    • minWidthminWidthDp に変更し、デフォルト値を 600dp に変更しました。
    • minSmallestWidthminSmallestWidthDp に変更し、デフォルト値を 600dp に変更しました。
    • デフォルト値 ALWAYS_ALLOWmaxAspectRatioInHorizontal を追加しました。
    • デフォルト値 1.4 の maxAspectRatioInPortrait を追加しました。
    • 終了動作定数に代わる FinishBehavior ネストされたクラスを定義しました。
    • SplitPairRuleSplitPlaceholderRule の Builder ネストクラスにプロパティの変更を適用しました。
  • 分割に関連する追加情報を提供するために、SplitInfo#getSplitRatio()SplitInfo#getSplitAttributes() に置き換えました。

WindowLayout

  • WindowInfoTracker に、アクティビティ以外の UI コンテキストの試験運用版サポートを追加しました。
  • WindowMetricsCalculator に試験運用版のアクティビティ以外の UI コンテキストを追加しました。

移行手順

  • アクティビティの埋め込みを有効にして、分割でアクティビティを表示するには、アプリでマニフェストの <application> タグに PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED プロパティを追加する必要があります。 xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> これにより、システムはアプリケーションの分割動作を事前に最適化できます。
  • SplitInfo 比率
    • 現在の分割が積み重ねられているかどうかを確認します。 kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • 現在の比率を確認します。 kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • SplitController の移行:
    • SplitController.getInstance()SplitController.getInstance(Context) に変更されます。
    • SplitController.initialize(Context, @ResId int)RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)) に変更されます。
    • SplitController.getInstance().isActivityEmbedded(Activity)ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity) に変更されます。
    • SplitController.getInstance().registerRule(rule)RuleController.getInstance(Context).addRule(rule) に変更されます。
    • SplitController.getInstance().unregisterRule(rule)RuleController.getInstance(Context).removeRule(rule) に変更されます。
    • SplitController.getInstance().clearRegisteredRules()RuleController.getInstance(Context).clearRules() に変更されます。
    • SplitController.getInstance().getSplitRules()RuleController.getInstance(Context).getRules() に変更されます。
  • SplitRule プロパティの移行:
    • minWidthminSmallestWidth で、ピクセル単位ではなく dp 単位が使用されるようになりました。アプリは次の呼び出しを使用できます。 kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) または、ピクセルで minWithdisplayMetrics#density で除算します。
  • 終了動作定数は、FinishBehavior 列挙型のようなクラス定数に移行する必要があります。
    • FINISH_NEVERFinishBehavior.NEVER に変更されます。
    • FINISH_ALWAYSFinishBehavior.ALWAYS に変更されます。
    • FINISH_ADJACENTFinishBehavior.ADJACENT に変更されます。
  • レイアウトの向きを SplitAttributes.LayoutDirection に移行する必要があります。
    • ltrSplitAttributes.LayoutDirection.LEFT_TO_RIGHT に変更されます。
    • rtlSplitAttributes.LayoutDirection.RIGHT_TO_LEFT に変更されます。
    • localeSplitAttributes.LayoutDirection.LOCALE に変更されます。
    • splitRatioSplitAttributes.SplitType.ratio(splitRatio) に移行する必要があります。
  • SplitPairRule.Builder の移行:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth)kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600. に変更
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio)kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() ) に変更
    • setFinishPrimaryWithSecondarysetFinishSecondaryWithPrimary は、FinishBehavior 列挙型のような定数を受け取ります。詳しくは、「SplitRule の移行」をご覧ください。
    • setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) を使用して、縦向きのデバイスに分割を表示します。
  • SplitPlaceholder.Builder の移行:
    • filters パラメータと placeholderIntent パラメータのみがあります。その他のプロパティはセッターへ移動します。詳細については、「SplitPairRule.Builder の移行」をご覧ください。
    • setFinishPrimaryWithPlaceholder は、FinishBehavior 列挙型のような定数を受け取ります。詳しくは、「SplitRule の移行」をご覧ください。
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio) は次のように変更されます。 kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) を使用して、縦向きのデバイスに分割を表示します。

バージョン 1.1.0-rc01

2023 年 5 月 10 日

androidx.window:window-*:1.1.0-rc01 がリリースされました。バージョン 1.1.0-rc01 に含まれる commit については、こちらをご覧ください

新機能

  • ActivityEmbedding を安定版 API としてリリース。
  • 各種バグを修正しました。

バージョン 1.1.0-beta02

2023 年 4 月 5 日

androidx.window:window-*:1.1.0-beta02 がリリースされました。バージョン 1.1.0-beta02 に含まれる commit については、こちらをご覧ください

新機能

  • 内部的な修正とクリーンアップ。

バージョン 1.1.0-beta01

2023 年 3 月 22 日

androidx.window:window-*:1.1.0-beta01 がリリースされました。バージョン 1.1.0-beta01 に含まれる commit については、こちらをご覧ください

アクティビティのエンベディング

  • アプリ マニフェストの <application> タグのブール値プロパティとして PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED を追加しました。
  • isSplitSupported を非推奨にして splitSupportStatus に置き換え、分割機能を使用できない理由についてより詳細な情報を提供できるようにしました。
  • splitSupportStatus プロパティの状態定数を提供する SplitController.SplitSupportStatus ネストされたクラスを追加しました。
  • SplitController を複数のモジュールにリファクタリングしました。
    • Activity または ActivityStack 関連の API 用の ActivityEmbeddingController モジュール。
    • isActivityEmbeddedSplitController から ActivityEmbeddingController に移動しました。
    • EmbeddingRule 関連オペレーション用の RuleController モジュール:
    • 削除された SplitController API:
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • RuleController API を追加しました。
      • addRule() - 同じタグを持つルールを追加または更新します。
      • removeRule() - 登録済みルールのコレクションからルールを削除します。
      • setRules() - ルールのコレクションを設定します。
      • clearRules() - 登録されているすべてのルールを削除します。
      • parseRules() - XML ルール定義からルールを解析します。
  • すべてのモジュールで、#getInstance() メソッドによってコンテキストを初期化する必要があります。以下に例を示します。
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • ディスプレイのアスペクト比に関連する列挙型のような動作定数を定義する EmbeddingAspectRatio クラスを追加しました。
  • 分割レイアウトを定義する SplitAttributes クラスを追加しました。
  • 分割レイアウトをカスタマイズするための SplitAttributes 計算関数を SplitController に追加しました。
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(): SplitAttributesCalculator API がデバイスでサポートされているかどうかを確認します。
  • EmbeddingRule#tag フィールドを追加しました。
  • SplitRule の API の更新:
    • defaultSplitAttributes を追加 - 分割のデフォルトの分割レイアウトを定義します。splitRatiolayoutDirection に代わるものです。
    • XML プロパティ splitRatiosplitLayoutDirection の翻訳を defaultSplitAttributes に追加しました。
    • 最小サイズの定義を変更し、ピクセルの代わりに密度非依存ピクセル(dp)を使用するようにしました。
    • デフォルト値 600dp の minHeightDp を追加しました。
    • minWidthminWidthDp に変更し、デフォルト値を 600dp に変更しました。
    • minSmallestWidthminSmallestWidthDp に変更し、デフォルト値を 600dp に変更しました。
    • デフォルト値 ALWAYS_ALLOWmaxAspectRatioInHorizontal を追加しました。
    • デフォルト値 1.4maxAspectRatioInPortrait を追加しました。
    • 終了動作定数に代わる FinishBehavior ネストされたクラスを定義しました。
    • SplitPairRuleSplitPlaceholderRuleBuilder ネストクラスにプロパティの変更を適用しました。
  • 分割に関連する追加情報を提供するために、SplitInfo#getSplitRatio()SplitInfo#getSplitAttributes() に置き換えました。

WindowLayout

  • WindowInfoTracker にアクティビティ以外の UI コンテキストのサポートを追加しました。
  • アクティビティ以外の UI コンテキストを WindowMetricsCalculator に追加しました。

移行手順

  • アクティビティの埋め込みを有効にして、分割でアクティビティを表示するには、アプリでマニフェストの <application> タグに PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED プロパティを追加する必要があります。 xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> これにより、システムはアプリケーションの分割動作を事前に最適化できます。
  • SplitInfo 比率
    • 現在の分割が積み重ねられているかどうかを確認します。 kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • 現在の比率を確認します。 kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • SplitController の移行:
    • SplitController.getInstance()SplitController.getInstance(Context) に変更されます。
    • SplitController.initialize(Context, @ResId int)RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)) に変更されます。
    • SplitController.getInstance().isActivityEmbedded(Activity)ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity) に変更されます。
    • SplitController.getInstance().registerRule(rule)RuleController.getInstance(Context).addRule(rule) に変更されます。
    • SplitController.getInstance().unregisterRule(rule)RuleController.getInstance(Context).removeRule(rule) に変更されます。
    • SplitController.getInstance().clearRegisteredRules()RuleController.getInstance(Context).clearRules() に変更されます。
    • SplitController.getInstance().getSplitRules()RuleController.getInstance(Context).getRules() に変更されます。
  • SplitRule プロパティの移行:
    • minWidthminSmallestWidth で、ピクセル単位ではなく dp 単位が使用されるようになりました。アプリは次の呼び出しを使用できます。 kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) または、ピクセルで minWithdisplayMetrics#density で除算します。
  • 終了動作定数は、FinishBehavior 列挙型のようなクラス定数に移行する必要があります。
    • FINISH_NEVERFinishBehavior.NEVER に変更されます。
    • FINISH_ALWAYSFinishBehavior.ALWAYS に変更されます。
    • FINISH_ADJACENTFinishBehavior.ADJACENT に変更されます。
  • レイアウトの向きを SplitAttributes.LayoutDirection に移行する必要があります。
    • ltrSplitAttributes.LayoutDirection.LEFT_TO_RIGHT に変更されます。
    • rtlSplitAttributes.LayoutDirection.RIGHT_TO_LEFT に変更されます。
    • localeSplitAttributes.LayoutDirection.LOCALE に変更されます。
    • splitRatioSplitAttributes.SplitType.ratio(splitRatio) に移行する必要があります。
  • SplitPairRule.Builder の移行:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth)kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600. に変更
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio)kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() ) に変更
    • setFinishPrimaryWithSecondarysetFinishSecondaryWithPrimary は、FinishBehavior 列挙型のような定数を受け取ります。詳しくは、「SplitRule の移行」をご覧ください。
    • setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) を使用して、縦向きのデバイスに分割を表示します。
  • SplitPlaceholder.Builder の移行:
    • filters パラメータと placeholderIntent パラメータのみがあります。その他のプロパティはセッターへ移動します。詳細については、「SplitPairRule.Builder の移行」をご覧ください。
    • setFinishPrimaryWithPlaceholder は、FinishBehavior 列挙型のような定数を受け取ります。詳しくは、「SplitRule の移行」をご覧ください。
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio) は次のように変更されます。 kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) を使用して、縦向きのデバイスに分割を表示します。

バージョン 1.1.0-alpha06

2023 年 2 月 22 日

androidx.window:window-*:1.1.0-alpha06 がリリースされました。バージョン 1.1.0-alpha06 に含まれる commit については、こちらをご覧ください

新機能

  • UI コンテキストから WindowLayoutInfo を取得する試験運用版を公開しました。

API の変更

  • アクティビティの埋め込みが利用可能かどうかを示す splitSupportStatus を追加しました。(I10024
  • UI Context WindowLayoutInfo API を試験運用版にしました。(I58ee0
  • RearDisplay モードを有効にするための WindowAreaController と API を導入しました。このモードは、現在のウィンドウを背面カメラに合わせたディスプレイに移動する際に使用します。(Iffcbf
  • デフォルトの背景色を更新しました。(I1ac1b
  • SplitAttributes パラメータを追加しました。(I18bdd
  • SplitRuleSplitAttributesSplitAttributesCalculator の API を追加しました。(I92d23
  • maxAspectRatio に関する API を改善しました。
    1. alwaysAllow()alwaysDisallow()ALWAYS_ALLOWALWAYS_DISALLOW に置き換えました。
    2. @see の API ドキュメントを独立したドキュメントとして更新しました。(I3057b
  • 以下のコンストラクタは、アプリによって呼び出されるものではないため、公開 API から削除されました。
    • SplitInfo コンストラクタ
    • ActivityStack コンストラクタ(Ide534
  • SplitRulemaxAspectRatioInPortrait/Landscape を受け取るようになりました。親境界のアスペクト比がリクエストされた maxAspectRatio 以下の場合にのみ、アクティビティを分割できます。(Ia5990
  • RuleController#parseRules を静的に変更しました。(I785df
  • ActivityEmbedding に関する API を改善しました。
    1. API 命名規則の調整 - 次のインスタンスについては add / remove を使用します
    2. registerRuleaddRule に変更
    3. unregisterRuleremoveRule に変更
    4. ActivityRule は分割ルールではないため、getSplitRulesgetRules に置き換えました
    5. 多数のルールを設定できる RuleController#setRules を追加しました
    6. SplitController のルール関連の API がシングルトン RuleController に抽出されます。該当する API は次のとおりです。
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. SplitController#isActivityEmbedded がシングルトン ActivityEmbeddingController に抽出されます。該当する API は次のとおりです。
    14. isActivityEmbedded
    15. SplitController#initialize を削除しました。XML ファイルからルールを設定するには、RuleController#parseRules#setRules を使用してください。変更前: SplitController.initialize(context, R.xml.static_rules) 変更後: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. 静的ルールとランタイム ルールが区別されなくなりました。つまり、#clearRules を呼び出すと、静的 XML ルールの定義に登録されているか実行時かどうかにかかわらず、すべてのルールがクリアされます。SplitController#clearRegisteredRules の従来の動作を利用するには、XML リソース ID を指定して RuleController#parseRules を呼び出し、RuleController#setRules を呼び出してルールを再度設定してください。 変更前: SplitController.getInstance(context).clearRegisteredRules() 変更後: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)Ib3967
  • SplitRule API を改善しました。
    1. 最小サイズは、SplitRule のピクセルではなく DP で指定します。
    2. 最小サイズをオプションとして受け取るように SplitRule Builder をリファクタリングしました。(I95f17
  • SplitController を初期化するためにコンテキストを渡すようにしました。(I42549
  • SplitRule#layoutDir の名前を #layoutDirection に、SplitRule Builder#setLayoutDir の名前を Builder#setLayoutDirection に変更しました。(I3f6d1

バージョン 1.1.0-alpha04

2022 年 11 月 9 日

androidx.window:window-*:1.1.0-alpha04 がリリースされました。バージョン 1.1.0-alpha04 に含まれる commit については、こちらをご覧ください

新機能

  • ActivityEmbeddingActivityStack が空かどうかを判断するためのメソッドを公開しました。
  • ActivityEmbedding API から試験運用版 API タグを削除しました。
  • 構築には Builder がおすすめの方法であるため、ActivityRule コンストラクタを非表示にしました。
  • WindowMetricsWindowInsets を取得する試験運用版のメソッドを追加しました。
  • プレースホルダが終了しないように SplitPlaceholderFinishBehavior を更新しました。プレースホルダが終了すると、混乱を招く動作が発生していました。

API の変更

  • val isEmpty を一般公開しました。これは fun isEmpty を置き換わるものです。
  • ActivityStack パラメータのアクティビティの名前を activitiesInProcess に変更しました。(Ia5055
  • ActivityFilter#matchesClassNameActivityFilter#matchesClassNameOrWildCard は混乱を招くため、削除しました。
  • 呼び出し元がさまざまなフィルタを区別できるように、ActivityFilter#componentNameActivityFilter#intentAction を追加しました。(I41f22
  • 試験運用版 API から @Deprecated API を削除しました。(I216b3
  • アクティビティ埋め込み API の @ExperimentalWindowApi を削除しました。(I69ebe
  • ActivityRule コンストラクタを非表示にしました。代わりに Builder を使用してください。(If4eb6
  • アクティビティが ActivityFilter に含まれているかどうかを確認する API を追加しました。(Ia43cf
  • WindowMetrics クラスと WindowMetricsCalculatorCompat クラスの変更を反映するように API ファイルを更新しました。(I667fe
  • ActivityEmbedding プロパティの Javadoc とクラス名を更新しました。(Ia1386
  • AndroidManifest.xml で使用する ActivityEmbedding プロパティ タグ名を追加しました。(Id1ad4
  • 新しい API SplitPlaceholderFinishBehaviorSplitPlaceholderRule.finishPrimaryWithPlaceholder を追加しました。これは、プレースホルダのアクティビティが終了するタイミング、およびアクティビティの埋め込みにおける関連するアクティビティの動作を定義する既存の SplitPlaceholderRule.finishPrimaryWithSecondary に代わるものです。(I64647

バグの修正

  • RearDisplay モードを有効にするための WindowAreaController と API を導入しました。このモードは、現在のウィンドウを背面カメラに合わせたディスプレイに移動する際に使用します。(I388ab

バージョン 1.1.0-alpha03

2022 年 7 月 27 日

androidx.window:window-*:1.1.0-alpha03 がリリースされました。バージョン 1.1.0-alpha03 に含まれる commit については、こちらをご覧ください

新機能

  • 埋め込みルールのデフォルト値を更新しました。

API の変更

  • 埋め込みルール プロパティのデフォルト値を更新しました。(Ic4d35

バージョン 1.1.0-alpha02

2022 年 5 月 11 日

androidx.window:window-*:1.1.0-alpha02 がリリースされました。バージョン 1.1.0-alpha02 に含まれる commit については、こちらをご覧ください

新機能

  • Java と RxJava をサポートするためのアダプタ ライブラリをリリースします。

バージョン 1.1.0-alpha01

2022 年 5 月 11 日

androidx.window:window-*:1.1.0-alpha01 がリリースされました。バージョン 1.1.0-alpha01 に含まれる commit については、こちらをご覧ください

新機能

  • Java と RxJava をサポートするためのアダプタをリリースします。

バージョン 1.1.0-alpha01

2022 年 4 月 20 日

androidx.window:window:1.1.0-alpha01 がリリースされました。バージョン 1.1.0-alpha01 に含まれる commit については、こちらをご覧ください

新機能

  • アプリがバックグラウンド処理に移行すると折りたたみ機能の出力が停止するバグを修正しました。
  • 試験運用版の ActivityEmbedding API を拡張しました。

API の変更

  • アクティビティが埋め込まれているかどうかを確認する公開 API。(I39eb7

バグの修正

  • アクティビティ分割でコンテナの終了動作をカスタマイズする API を追加しました。(I1a1e4
  • アクティビティ分割ルールの新しい設定オプションを追加しました。(Iec6af

バージョン 1.0

バージョン 1.0.0

2022 年 1 月 26 日

androidx.window:window-*:1.0.0 がリリースされました。バージョン 1.0.0 に含まれる commit については、こちらをご覧ください

1.0.0 の主な機能

  • WindowInfoTrackerFoldingFeature により折りたたみ式スマートフォンをサポートします。WindowMetricsCalculator は現在の WindowMetrics の計算に役立ちます。

バージョン 1.0.0-rc01

2021 年 12 月 15 日

androidx.window:window-*:1.0.0-rc01 がリリースされました。バージョン 1.0.0-rc01 に含まれる commit については、こちらをご覧ください

新機能

  • WindowInfoTracker による折りたたみ式スマートフォンのサポートを追加しました。
  • WindowMetrics の現在値と最大値を計算するメソッドを追加しました。
  • サポート用のテスト API を追加しました。

バージョン 1.0.0-beta04

2021 年 11 月 17 日

androidx.window:window-*:1.0.0-beta04 がリリースされました。バージョン 1.0.0-beta04 に含まれる commit については、こちらをご覧ください

新機能

  • WindowInfoRepository の名前を WindowInfoTracker に変更しました。
  • Activity を WindowInfoTracker の明示的なメソッド依存関係にします。
  • Robolectric を使用するデベロッパーをサポートするために、WindowMetricsCalculator に簡単な TestRule を追加しました。

API の変更

  • 拡張機能の抽出(I25a5f
  • ActivityStack に isEmpty を追加しました(I5a4e6
  • WindowInfoRepository の名前を WindowInfoTracker に変更しました。
    • java/rxjava/testing の依存関係を一致するように更新しました。(I0da63
  • 単純な WindowMetricsCalculator のテストルールを追加しました。(Ibacdb

バージョン 1.0.0-beta03

2021 年 10 月 27 日

androidx.window:window-*:1.0.0-beta03 がリリースされました。バージョン 1.0.0-beta03 に含まれる commit については、こちらをご覧ください

新機能

  • 試験運用版のアクティビティ埋め込み API を追加しました。この最初のレイアウト バージョンでは、2 つのアクティビティを並べて表示できます。

API の変更

  • currentWindowMetrics API は、正確に提供できないため削除しました。代わりに WindowMetricsCalculator を使用してください。(Icda5f
  • 拡張機能 API を更新しました。(Ica92b
  • アクティビティを埋め込んで親タスク ウィンドウ内に並べて表示できる新機能のインターフェースを追加しました。(I5711d
  • WindowMetrics と WindowLayoutInfo のコンストラクタを非表示にしました。代わりにテスト API を使用してください。(I5a1b5
  • 偽の WindowLayoutInfo オブジェクトを作成する API を追加しました。(I4a2fd

バグの修正

バージョン 1.0.0-beta02

2021 年 9 月 1 日

androidx.window:window-*:1.0.0-beta02 がリリースされました。バージョン 1.0.0-beta02 に含まれる commit については、こちらをご覧ください

新機能

  • 試験運用版 API にアノテーションを付けるために、試験運用版アノテーションを追加します。(I9f1b6
  • Rect を受け入れるテスト用 FoldingFeature を作成するテストメソッドを追加します。これにより、実際の Activity ではなく Robolectric を使用する場合のテストが容易になります。(Id1cca

バージョン 1.0.0-beta01

2021 年 8 月 18 日

androidx.window:window-*:1.0.0-beta01 がリリースされました。バージョン 1.0.0-beta01 に含まれる commit については、こちらをご覧ください

新機能

  • 古い定数を削除し、FoldingFeature をインターフェースに変更しました。

API の変更

  • 古い定数を削除し、FoldFeature をインターフェースに変更します。(I9a2d5

バグの修正

  • Test Core ライブラリに依存するライブラリがバージョン 1.4.0 にアップグレードされました。Android プラットフォーム バージョン S で動作するようになります。(I88b72b/189353863

バージョン 1.0.0-alpha10

2021 年 8 月 4 日

androidx.window:window-*:1.0.0-alpha10 がリリースされました。バージョン 1.0.0-alpha10 に含まれる commit については、こちらをご覧ください。

新機能

  • WindowInfoRepo の名前を WindowInfoRepository に変更し、対応するクラス / ファイルを調整します。
  • 時間の経過とともに値が変化するため、現在のウィンドウ指標を WindowInfoRepository の Flow に変換します。
  • WindowInfoRepoJavaAdapter の名前を WindowInfoRepoCallbackAdapter に変更します。
  • テスト用の FoldingFeature オブジェクトを作成するヘルパー メソッドを追加します。
  • パッケージを更新し、クラスがサポートする機能に基づいてクラスをグループ化します。

API の変更

  • ActivityExt の名前を ActivityExtensions に変更し、Repo を Repository に変更します。(I61a16
  • クラスのパッケージを更新します。(I23ae2
  • WindowInfoRepo から WindowMetrics を削除します。(I24663
  • WindowManager を削除し、WindowInfoRepo を使用します。
    • WindowBackend を内部化します。(I06d9a
  • ウィンドウ指標を Flow に変換します。
    • Java アダプタの名前を WindowInfoRepoCallbackAdapter に変更します。
    • callbackFlow を削除します。したがって、今後は試験運用版 API を使用しません。(Ia4d15
  • テスト表示機能を作成するヘルパー メソッドを追加します。
    • occlusionMode を occlusionType に変更します。(If4cff

バグの修正

  • core ライブラリが削除される ProGuard エラーを修正しました。
  • WindowLayoutInfo が追加のサブスクライバーに配信されないエラーを修正しました。
  • 構成を変更しても折りたたみ機能の更新がトリガーされないエラーを修正しました。

バージョン 1.0.0-alpha09

2021 年 6 月 30 日

androidx.window:window-*:1.0.0-alpha09 がリリースされました。バージョン 1.0.0-alpha09 に含まれる commit については、こちらをご覧ください。

新機能

  • 整数の定数を制限なしの列挙型に変更します。
  • テスト用の折りたたみ機能を作成するためのテスト ユーティリティを追加します。

API の変更

  • テスト表示機能を作成するヘルパー メソッドを追加します。(I3cf54
    • occlusionModeocclusionType に変更します。

バグの修正

  • データ ストリームの複数のコンシューマを追加する際に、初期値を出力します。

バージョン 1.0.0-alpha08

2021 年 6 月 16 日

androidx.window:window-*:1.0.0-alpha08 がリリースされました。バージョン 1.0.0-alpha08 に含まれる commit については、こちらをご覧ください。

新機能

  • WindowInfoRepository を使用する場合のテストを容易にするため、テスト アーティファクトをリリースしました。WindowInfoRepository を使用して、DisplayFeatures と WindowMetrics に関する情報を取得できます。(I57f66Ida620

バージョン 1.0.0-alpha07

2021 年 6 月 2 日

androidx.window:window-*:1.0.0-alpha07 がリリースされました。バージョン 1.0.0-alpha07 に含まれる commit については、こちらをご覧ください。

新機能

  • ウィンドウ ライブラリのコアを Kotlin に移行します。今後は、コルーチンと suspend 関数を使用して非同期データを公開します。
  • WindowLayoutInfo のストリームと WindowMetrics を取得するための主要な接点として WindowInfoRepo を追加します。
  • コールバックの登録と登録解除を行う Java 対応 API を公開する window-java アーティファクトを導入しました。
  • RxJava に対応させた API を公開するアーティファクト window-rxjava2window-rxjava3 を導入しました。

API の変更

  • 依存関係を全体に提供する WindowServices を追加しました。
    • ウィンドウ レイアウト情報を消費するコルーチン ベースの API を追加しました。(Iab70f
  • ウィンドウ マネージャー ライブラリのコアを Kotlin に移行しました。(Icca34

バグの修正

  • 形状の境界を表すデータクラスを追加しました。(I6dcd1

バージョン 1.0.0-alpha06

2021 年 5 月 5 日

androidx.window:window:1.0.0-alpha06 がリリースされました。バージョン 1.0.0-alpha06 に含まれる commit については、こちらをご覧ください。

新機能

  • Google は Kotlin への移行を開始しており、次のリリースで完了する予定です。
  • DeviceState が公開 API から削除されました。代わりに FoldingFeature を使用してください。
  • 現時点で STATE_FLIPPED はいかなるユースケースでもサポートされていないため、FoldingFeature の状態から削除しました。
  • サポートが終了した他の API も削除しました。

API の変更

  • Kotlin を依存関係として追加しました。
    • コアライブラリを Kotlin に移行しました。(Idd995
  • DisplayFeature ビルダーを削除しました。(I61fa4
  • 公開 API から DeviceState を削除しました。代わりに FoldingFeature を使用してください。(Id6079
  • 拡張機能からデバイス状態のコールバックを削除しました。(I5ea83
  • FoldingFeature から STATE_FLIPPED を削除しました。(I9c4e1
  • 非推奨となった登録メソッドを削除しました。(Ib381b

バージョン 1.0.0-alpha05

2021 年 3 月 24 日

androidx.window:window:1.0.0-alpha05 がリリースされました。バージョン 1.0.0-alpha05 に含まれる commit については、こちらをご覧ください

新機能

FoldingFeature に便利なメソッドを追加し、機能が分離しているかどうか、覆い隠しているかどうか、ヒンジの向きをアプリが判断できるようにしました。また、以下のために、ヒンジタイプを非表示にします。

WindowManager から同期読み取りメソッドを削除します。同期読み取りメソッドは、暗黙的な競合状態が生じるため、エラーが発生しやすくなります。WindowLayoutInfo のアップデートを受け取るため、リスナーとコールバックを登録します。

API の変更

  • FoldingFeatures の操作に役立つメソッドを追加(Ie733f
  • WindowManager から同期読み取りメソッドを削除(I96fd4

バージョン 1.0.0-alpha04

2021 年 3 月 10 日

androidx.window:window:1.0.0-alpha04 がリリースされました。バージョン 1.0.0-alpha04 に含まれる commit については、こちらをご覧ください

新機能

  • OEM が実装されていない場合、WindowLayoutInfo が出力されないバグを修正しました。ここでは空の WIndowLayoutInfo を出力するようにします。
  • アプリがバックグラウンドで動作しているときにヒンジ状態が変わると、状態が正しく更新されないバグを修正しました。この状態は統一されるようになります。
  • ランタイム依存関係からの警告を無視するように、ProGuard ファイルを更新しました。

バグの修正

  • OEM ライブラリがない場合は、空の値を出力します。(Ide935

バージョン 1.0.0-alpha03

2021 年 2 月 18 日

androidx.window:window:1.0.0-alpha03 がリリースされました。バージョン 1.0.0-alpha03 に含まれる commit については、こちらをご覧ください

新機能

  • OEM の実装が空の場合は、WindowLayoutInfo に空の値を出力します。これにより、より多くのデバイスでライブラリを簡単に使用できるようになります。ただし、API は非同期であるため、アプリで防御のためのコードを作成してタイムアウト後にデフォルト値を出力することをおすすめします。OEM の実装について Google はいかなる保証もいたしません。また、初期値が遅延する可能性もあります。

バグの修正

  • OEM ライブラリがない場合は、空の値を出力します。(Ide935

バージョン 1.0.0-alpha02

2021 年 1 月 27 日

androidx.window:window:1.0.0-alpha02 がリリースされました。バージョン 1.0.0-alpha02 に含まれる commit については、こちらをご覧ください。

新機能

  • API を合理化して誤りを減らすために、いくつかの API のサポートを終了しました。重要な変更の 1 つは、WindowManager から同期読み取りオペレーションを削除して DeviceState のサポートを終了したことです。同期読み取りオペレーションは競合状態を引き起こし、正しく UI が表示されない原因になることがあります。

  • DisplayFeature は、他の機能で今後実装されるインターフェースに移行されました。最初に提供される機能は FoldingFeature で、これは画面の折りたたみまたはヒンジを表現します。これには、DeviceState に取って代わるヒンジの状態も含まれます。

  • WindowMetrics は Android 11 で導入されましたが、その目的は、デベロッパーがウィンドウに関する指標(ウィンドウの画面上の位置とサイズ、システム インセットなど)を簡単にクエリできるようにすることでした。このリリースでは、デベロッパーが WindowMetrics を利用して古い Android バージョンのサポートを継続できるように、API をバックポートしました。WindowMetrics は、WindowManager#getCurrentWindowMetrics() API および WindowManager#getMaximumWindowMetrics() API で取得できます。

API の変更

  • 次のアルファ版で削除される API のサポートを終了しました(Ib7cc4
  • ExtensionInterface を更新して明示的なアクティビティ参照を受け入れるようにしました。(I07ded
  • WindowMetrics API を導入しました。(I3ccee
  • WindowManager から同期読み取りメソッドを削除しました(I69983
  • ExtensionWindowBackend パッケージが保護されるようにしました。(Ied208

バグの修正

  • 視覚的コンテキストを受け入れるように ExtensionInterface API を更新しました。(I8e827

外部からの協力

  • DeviceState と WindowLayoutInfo を結合して、データに簡単にアクセスできるようにしました。(Id34f4

バージョン 1.0.0-alpha01

2020 年 2 月 27 日

androidx.window:window:1.0.0-alpha01androidx.window:window-extensions:1.0.0-alpha01 がリリースされました。バージョン 1.0.0-alpha01 に含まれる commit については、こちらをご覧ください。 これは、Window Manager ライブラリの最初のリリースです。

新機能

  • DisplayFeature: この新しい API は、連続する平坦な画面サーフェスが蝶番や折りたたみの部分で途切れた状態を識別します。
  • DeviceState: この新しい API は、スマートフォンの定義済みの物理状態(CLOSEDOPENEDHALF_OPENED など)のリストの中から現在の物理状態を提供します。