WindowManager
最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
---|---|---|---|---|
2023 年 2 月 22 日 | 1.0.0 | - | - | 1.1.0-alpha06 |
依存関係の宣言
Window Manager への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle
ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { implementation "androidx.window:window:1.0.0" // For Java-friendly APIs to register and unregister callbacks implementation "androidx.window:window-java:1.0.0" // For RxJava2 integration implementation "androidx.window:window-rxjava2:1.0.0" // For RxJava3 integration implementation "androidx.window:window-rxjava3:1.0.0" // For testing implementation "androidx.window:window-testing:1.0.0" }
Kotlin
dependencies { implementation("androidx.window:window:1.0.0") // For Java-friendly APIs to register and unregister callbacks implementation("androidx.window:window-java:1.0.0") // For RxJava2 integration implementation("androidx.window:window-rxjava2:1.0.0") // For RxJava3 integration implementation("androidx.window:window-rxjava3:1.0.0") // For testing implementation("androidx.window:window-testing:1.0.0") }
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
バージョン 1.1
バージョン 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)SplitRule
、SplitAttributes
、SplitAttributesCalculator
の API を追加しました。(I92d23)maxAspectRatio
に関する API を改善しました。alwaysAllow()
とalwaysDisallow()
をALWAYS_ALLOW
とALWAYS_DISALLOW
に置き換えました。- @see の API ドキュメントを独立したドキュメントとして更新しました。(I3057b)
- 以下のコンストラクタは、アプリによって呼び出されるものではないため、公開 API から削除されました。
SplitInfo
コンストラクタActivityStack
コンストラクタ(Ide534)
SplitRule
がmaxAspectRatioInPortrait/Landscape
を受け取るようになりました。親境界のアスペクト比がリクエストされたmaxAspectRatio
以下の場合にのみ、アクティビティを分割できます。(Ia5990)RuleController#parseRules
を静的に変更しました。(I785df)- ActivityEmbedding に関する API を改善しました。
- API 命名規則の調整 - 次のインスタンスについては add / remove を使用します
registerRule
をaddRule
に変更unregisterRule
をremoveRule
に変更ActivityRule
は分割ルールではないため、getSplitRules
をgetRules
に置き換えました- 多数のルールを設定できる
RuleController#setRules
を追加しました SplitController
のルール関連の API がシングルトンRuleController
に抽出されます。該当する API は次のとおりです。addRule
removeRule
getRules
setRules
clearRules
parseRules
SplitController
の#isActivityEmbedded
がシングルトンActivityEmbeddingController
に抽出されます。該当する API は次のとおりです。isActivityEmbedded
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)
- 静的ルールとランタイム ルールが区別されなくなりました。つまり、
#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 を改善しました。
- 最小サイズは、
SplitRule
のピクセルではなく DP で指定します。 - 最小サイズをオプションとして受け取るように
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 については、こちらをご覧ください。
新機能
ActivityEmbedding
のActivityStack
が空かどうかを判断するためのメソッドを公開しました。ActivityEmbedding
API から試験運用版 API タグを削除しました。- 構築には
Builder
がおすすめの方法であるため、ActivityRule
コンストラクタを非表示にしました。 WindowMetrics
でWindowInsets
を取得する試験運用版のメソッドを追加しました。- プレースホルダが終了しないように
SplitPlaceholderFinishBehavior
を更新しました。プレースホルダが終了すると、混乱を招く動作が発生していました。
API の変更
- val
isEmpty
を一般公開しました。これは funisEmpty
を置き換わるものです。 ActivityStack
パラメータのアクティビティの名前をactivitiesInProcess
に変更しました。(Ia5055)ActivityFilter#matchesClassName
とActivityFilter#matchesClassNameOrWildCard
は混乱を招くため、削除しました。- 呼び出し元がさまざまなフィルタを区別できるように、
ActivityFilter#componentName
とActivityFilter#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
SplitPlaceholderFinishBehavior
とSplitPlaceholderRule.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)
バグの修正
バージョン 1.0
バージョン 1.0.0
2022 年 1 月 26 日
androidx.window:window-*:1.0.0
がリリースされました。バージョン 1.0.0 に含まれる commit については、こちらをご覧ください。
1.0.0 の主な機能
WindowInfoTracker
とFoldingFeature
により折りたたみ式スマートフォンをサポートします。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)
バグの修正
- メモリリークを解決しました。(I3fc79、b/202989046)
バージョン 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 で動作するようになります。(I88b72、b/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)
occlusionMode
をocclusionType
に変更します。
バグの修正
- データ ストリームの複数のコンシューマを追加する際に、初期値を出力します。
バージョン 1.0.0-alpha08
2021 年 6 月 16 日
androidx.window:window-*:1.0.0-alpha08
がリリースされました。バージョン 1.0.0-alpha08 に含まれる commit については、こちらをご覧ください。
新機能
- WindowInfoRepository を使用する場合のテストを容易にするため、テスト アーティファクトをリリースしました。WindowInfoRepository を使用して、DisplayFeatures と WindowMetrics に関する情報を取得できます。(I57f66、Ida620)
バージョン 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-rxjava2
、window-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 の変更
バージョン 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-alpha01
と androidx.window:window-extensions:1.0.0-alpha01
がリリースされました。バージョン 1.0.0-alpha01 に含まれる commit については、こちらをご覧ください。
これは、Window Manager ライブラリの最初のリリースです。
新機能
DisplayFeature
: この新しい API は、連続する平坦な画面サーフェスが蝶番や折りたたみの部分で途切れた状態を識別します。DeviceState
: この新しい API は、スマートフォンの定義済みの物理状態(CLOSED
、OPENED
、HALF_OPENED
など)のリストの中から現在の物理状態を提供します。