WindowManager

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

依存関係の宣言

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-alpha01

2024 年 8 月 7 日

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

新機能

  • ActivityStack の固定を使用すると、アプリでコンテンツを 1 つのコンテナに固定し、そのナビゲーションを他のコンテナから分離できます。
  • [Interactive Divider] を使用すると、アプリで分割プレゼンテーション内の 2 つのアクティビティの間に固定またはドラッグ可能な分割線を表示できます。
  • 全画面ダイアログの減光では、アプリでダイアログの減光領域を指定できます。タスク ウィンドウ全体を暗くするか、ダイアログを表示するコンテナのみを暗くすることができます。
  • 埋め込みアクティビティ ウィンドウ情報コールバックを使用すると、アプリは埋め込みアクティビティ ウィンドウの更新を継続的に受信できます。
  • Embedding Animation Background では、アプリでアニメーションの背景を指定できるようになり、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 を使用する場合は API モデリングを介して自動的に行われ、AGP 8.1 以降(D8 バージョン 8.1 など)を使用する場合はすべてのビルドで行われるためです。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
  • overridesInfo 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 の固定/固定解除を追加 <ph type="x-smartling-placeholder">
      </ph>
    • 上部の 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 では、Kotlin マルチプラットフォームが WindowSizeClass の機能に対応し、複数のバグが修正されました。

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 については、こちらをご覧ください

新機能

  • 背面画面にアクセスするための試験運用版の window 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 以降の重要な変更

  • 背面画面にアクセスするための試験運用版の window 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 については、こちらをご覧ください

新機能

  • 背面画面にアクセスするための試験運用版の window 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 で必要な window 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 については、こちらをご覧ください

新機能

  • 背面画面にアクセスするための試験運用版の window 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
  • Stable の背景色 API を削除。(I34c3e)。
  • ウィンドウ領域 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 のサポートを終了する <ph type="x-smartling-placeholder">
      </ph>
    • add/removeSplitCallbackSplitControllerCallbackAdapter に移動
    • Flow のサポートを追加して SplitInfo リストを取得(I7f1b6
  • ActivityEmbeddingController のテストルールを追加(I42e9b
  • ActivityOptionsCompat の名前を ActivityEmbeddingOptions に変更しました(I89301
  • アクティビティの埋め込みが利用可能かどうかを示す splitSupportStatus を追加しました。(I10024
  • DEFAULT 値をより適切に表現するために SplitAttributes.BackgroundColor を導入しました。アニメーションの不透明な背景色はサポートされていないため、不透明でない色はすべてデフォルトとして扱われ、現在のテーマ ウィンドウの背景色が使用されることを明確にしました。(Ic6b95)。
  • alwaysAllow()alwaysDisallow()ALWAYS_ALLOWALWAYS_DISALLOW に置き換えます。(I3057b)。
  • SplitRuleSplitAttributesSplitAttributesCalculator の API を追加しました。(I92d23
  • TestActivityStack を追加してテスト用の ActivityStack を作成する <ph type="x-smartling-placeholder">
      </ph>
    • TestSplitInfo を追加してテスト用の SplitInfo を作成します。(I8e779)。
  • 架空の SplitAttributesCalculatorParams を作成する方法を追加し、デベロッパーがカスタマイズした SplitAttributesCalculator を確認できるようにしました(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)。

バグの修正

  • WindowLayoutInfo に基づく Context に基づくオーバーライドをサポートするように 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 クラスを追加しました。
  • 分割レイアウトをカスタマイズするために、SplitControllerSplitAttributes 計算関数を追加しました。 <ph type="x-smartling-placeholder">
      </ph>
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(): SplitAttributesCalculator API がデバイスでサポートされているかどうかを確認
  • EmbeddingRule#tag フィールドを追加しました。
  • SplitRule での API の更新:
    • defaultSplitAttributes が追加されました。分割のデフォルトの分割レイアウトを定義します。splitRatiolayoutDirection に代わるものです。
    • XML プロパティ splitRatiosplitLayoutDirection の変換を defaultSplitAttributes に追加しました。
    • 最小寸法の定義を変更して、ピクセルではなく密度非依存ピクセル(dp)を使用するようにしました。
    • minHeightDp を追加しました(デフォルト値: 600 dp)。
    • minWidthminWidthDp(デフォルト値: 600 dp)に変更しました。
    • minSmallestWidthminSmallestWidthDp(デフォルト値: 600 dp)に変更しました。
    • maxAspectRatioInHorizontal を追加しました(デフォルト値: ALWAYS_ALLOW)。
    • maxAspectRatioInPortrait を追加しました(デフォルト値は 1.4)。
    • 終了動作定数を置き換えるために、ネストされたクラス FinishBehavior を定義しました。
    • プロパティの変更を、SplitPairRuleSplitPlaceholderRule の Builder ネストクラスに適用しました。
  • SplitInfo#getSplitRatio()SplitInfo#getSplitAttributes() に置き換えて、追加の分割関連情報を提供しました。

WindowLayout

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

移行手順

  • アクティビティの埋め込みを有効にして、分割にアクティビティを表示するには、アプリで PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED プロパティをマニフェストの <application> タグに追加する必要があります。 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 ) または、minWith をピクセル単位で displayMetrics#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() )
    • setFinishPrimaryWithSecondarysetFinishSecondaryWithPrimaryFinishBehavior 列挙型のような定数を受け取ります。詳しくは、「分割ルールの移行」をご覧ください。
    • 縦向きデバイスで分割を表示するには、setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) を使用します。
  • SplitPlaceholder.Builder の移行:
    • filters パラメータと placeholderIntent パラメータのみを持ちます。他のプロパティはセッターに移動します。詳しくは、「SplitPairRule.Builder の移行」をご覧ください。
    • setFinishPrimaryWithPlaceholderFinishBehavior 列挙型のような定数を受け取ります。詳しくは、「分割ルールの移行」をご覧ください。
    • 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 については、こちらをご覧ください

新機能

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

バージョン 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 クラスを追加しました。
  • 分割レイアウトをカスタマイズするために、SplitControllerSplitAttributes 計算関数を追加しました。 <ph type="x-smartling-placeholder">
      </ph>
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(): SplitAttributesCalculator API がデバイスでサポートされているかどうかを確認
  • EmbeddingRule#tag フィールドを追加しました。
  • SplitRule での API の更新:
    • defaultSplitAttributes が追加されました。分割のデフォルトの分割レイアウトを定義します。splitRatiolayoutDirection に代わるものです。
    • XML プロパティ splitRatiosplitLayoutDirection の変換を defaultSplitAttributes に追加しました。
    • 最小寸法の定義を変更して、ピクセルではなく密度非依存ピクセル(dp)を使用するようにしました。
    • minHeightDp を追加しました(デフォルト値: 600 dp)。
    • minWidthminWidthDp(デフォルト値: 600 dp)に変更しました。
    • minSmallestWidthminSmallestWidthDp(デフォルト値: 600 dp)に変更しました。
    • maxAspectRatioInHorizontal を追加しました(デフォルト値: ALWAYS_ALLOW)。
    • maxAspectRatioInPortrait を追加しました(デフォルト値: 1.4)。
    • 終了動作定数を置き換えるために、ネストされたクラス FinishBehavior を定義しました。
    • プロパティの変更を SplitPairRuleSplitPlaceholderRule のネストクラス Builder に適用しました。
  • SplitInfo#getSplitRatio()SplitInfo#getSplitAttributes() に置き換えて、追加の分割関連情報を提供しました。

WindowLayout

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

移行手順

  • アクティビティの埋め込みを有効にして、分割にアクティビティを表示するには、アプリで PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED プロパティをマニフェストの <application> タグに追加する必要があります。 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 ) または、minWith をピクセル単位で displayMetrics#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() )
    • setFinishPrimaryWithSecondarysetFinishSecondaryWithPrimaryFinishBehavior 列挙型のような定数を受け取ります。詳しくは、「分割ルールの移行」をご覧ください。
    • 縦向きデバイスで分割を表示するには、setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) を使用します。
  • SplitPlaceholder.Builder の移行:
    • filters パラメータと placeholderIntent パラメータのみを持ちます。他のプロパティはセッターに移動します。詳しくは、「SplitPairRule.Builder の移行」をご覧ください。
    • setFinishPrimaryWithPlaceholderFinishBehavior 列挙型のような定数を受け取ります。詳しくは、「分割ルールの移行」をご覧ください。
    • 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 など)のリストの中から現在の物理状態を提供します。