WindowManager

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

依存関係の宣言

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

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

Groovy

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

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

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

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

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

Kotlin

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

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

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

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

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

フィードバック

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

新しい問題を報告する

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

バージョン 1.3

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

新機能

  • RequiresApi チェックを追加して、正しく機能させるために特定のバージョンの拡張機能が必要な API をチェックしました。
  • デバイス上の拡張機能のバージョンを公開するための 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 を試験運用版としてマークし、API の変更を 1.3 の安定版リリースで継続できるようにしました。(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
  • DEFAULT 値をより適切に表す SplitAttributes.BackgroundColor を導入しました。不透明でないアニメーションの背景色はサポートされていないため、不透明でない色はすべてデフォルトとして扱われ、現在のテーマ ウィンドウの背景色が使用されることを明記しました。(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 でオーバーライドすると、Context ベースの API を含む windowLayoutInfo のすべての値がオーバーライドされます。

API の変更

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

バグの修正

  • WindowLayoutInfoPublishRule を更新して、Context ベースの WindowLayoutInfo ベースのオーバーライドをサポートするようにしました。(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 プロパティ splitRatiosplitLayoutDirectiondefaultSplitAttributes への翻訳を追加しました。
    • 最小サイズの定義を変更し、ピクセルではなく密度非依存ピクセル(dp)を使用するようにしました。
    • デフォルト値 600 dp の minHeightDp を追加しました。
    • minWidthminWidthDp (デフォルト値: 600 dp)に変更しました。
    • minSmallestWidthminSmallestWidthDp (デフォルト値: 600 dp)に変更しました。
    • デフォルト値 ALWAYS_ALLOWmaxAspectRatioInHorizontal を追加しました。
    • デフォルト値 1.4 の maxAspectRatioInPortrait を追加しました。
    • 終了動作の定数を置き換えるために、ネストされたクラス FinishBehavior を定義しました。
    • プロパティの変更をビルダーのネストクラス(SplitPairRuleSplitPlaceholderRule)に適用しました。
  • 分割関連の追加の情報を提供するため、SplitInfo#getSplitRatio()SplitInfo#getSplitAttributes() に置き換えました。

WindowLayout

  • 試験運用版の非アクティビティ UI コンテキストのサポートを WindowInfoTracker に追加しました。
  • 試験運用版の非アクティビティ 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 ) の呼び出しを使用するか、単にピクセルの 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. に変更されます。
    • kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() ) に対する setLayoutDirection(layoutDirection)setSplitRatio(ratio) の変更
    • 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 プロパティ splitRatiosplitLayoutDirectiondefaultSplitAttributes への翻訳を追加しました。
    • 最小サイズの定義を変更し、ピクセルではなく密度非依存ピクセル(dp)を使用するようにしました。
    • デフォルト値 600 dp の minHeightDp を追加しました。
    • minWidthminWidthDp (デフォルト値: 600 dp)に変更しました。
    • minSmallestWidthminSmallestWidthDp (デフォルト値: 600 dp)に変更しました。
    • デフォルト値 ALWAYS_ALLOWmaxAspectRatioInHorizontal を追加しました。
    • デフォルト値 1.4maxAspectRatioInPortrait を追加しました。
    • 終了動作の定数を置き換えるために、ネストされたクラス FinishBehavior を定義しました。
    • プロパティの変更を SplitPairRuleSplitPlaceholderRuleBuilder ネストクラスに適用しました。
  • 分割関連の追加の情報を提供するため、SplitInfo#getSplitRatio()SplitInfo#getSplitAttributes() に置き換えました。

WindowLayout

  • アクティビティ以外の UI コンテキストのサポートを WindowInfoTracker に追加しました。
  • アクティビティ以外の 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 ) の呼び出しを使用するか、単にピクセルの 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 など)のリストの中から現在の物理状態を提供します。