WindowManager
| Latest Update | Stable Release | Release Candidate | Beta Release | Alpha Release | 
|---|---|---|---|---|
| September 24, 2025 | 1.5.0 | - | - | - | 
Declaring dependencies
To add a dependency on WindowManager, you must add the Google Maven repository to your project. Read Google's Maven repository for more information.
Add the dependencies for the artifacts you need in the build.gradle file for
your app or module:
Groovy
dependencies { implementation "androidx.window:window:1.5.0" // For Java-friendly APIs to register and unregister callbacks implementation "androidx.window:window-java:1.5.0" // For RxJava2 integration implementation "androidx.window:window-rxjava2:1.5.0" // For RxJava3 integration implementation "androidx.window:window-rxjava3:1.5.0" // For testing implementation "androidx.window:window-testing:1.5.0" }
Kotlin
dependencies { implementation("androidx.window:window:1.5.0") // For Java-friendly APIs to register and unregister callbacks implementation("androidx.window:window-java:1.5.0") // For RxJava2 integration implementation("androidx.window:window-rxjava2:1.5.0") // For RxJava3 integration implementation("androidx.window:window-rxjava3:1.5.0") // For testing implementation("androidx.window:window-testing:1.5.0") }
Feedback
Your feedback helps make Jetpack better. Let us know if you discover new issues or have ideas for improving this library. Please take a look at the existing issues in this library before you create a new one. You can add your vote to an existing issue by clicking the star button.
See the Issue Tracker documentation for more information.
Version 1.5
Version 1.5.0
September 24, 2025
androidx.window:window-*:1.5.0 is released. Version 1.5.0 contains these commits.
Important changes since 1.4.0:
- Add 
WindowSizeClassbreakpoints for Large and XLarge. (I40d85) - Expand calculating 
WindowMetricsto Application Context. (I8eeeb, b/360934048) - Provider a Getter to enable direct access to 
WindowLayoutInfo(Ie9513) - Introduce API to auto save embedding state and to auto restore the embedding state when the app process is restarted. (Ie0295)
 - Remove experimental 
WindowInsetsAPI. (I68a71) 
Bug Fixes
- Fixes 
EmbeddingRulereturning differenthashCodein some cases. (I748cc) - Fix for where a 
NullPointerExceptioncould occur due to errors on the device implementation. - Fix for where our 
ActivityEmbeddingsafety checks would fail due to proguard removing unused classes. 
External Contribution
- Add all KMP platforms to 
window-core(If3d7c) 
Version 1.5.0-rc01
August 27, 2025
androidx.window:window-*:1.5.0-rc01 is released. Version 1.5.0-rc01 contains these commits.
Bug Fixes
- Fix for where a 
NullPointerExceptioncould occur due to errors on the device implementation. - Fix for where our 
ActivityEmbeddingsafety checks would fail due to proguard removing unused classes. 
Version 1.5.0-beta02
August 13, 2025
androidx.window:window-*:1.5.0-beta02 is released. Version 1.5.0-beta02 contains these commits.
New Features
- Minor bug fixes.
 
External Contribution
- Add all KMP platforms to 
window-core(If3d7c) 
Version 1.5.0-beta01
July 2, 2025
androidx.window:window-*:1.5.0-beta01 is released. Version 1.5.0-beta01 contains these commits.
Version 1.5.0-alpha02
May 7, 2025
androidx.window:window-*:1.5.0-alpha02 is released. Version 1.5.0-alpha02 contains these commits.
API Changes
- Add 
WindowSizeClassbreakpoints for Large and XLarge. (I40d85) - Expand calculating 
WindowMetricsto Application Context. (I8eeeb, b/360934048) - Provider a Getter to enable direct access to 
WindowLayoutInfo(Ie9513) - Introduce API to auto save embedding state and to auto restore the embedding state when the app process is restarted. (Ie0295)
 - Remove experimental 
WindowInsetsAPI. (I68a71) - Hide a few constructors (I87b8d)
 
Bug Fixes
- Fixes 
EmbeddingRulereturning differenthashCodein some cases. (I748cc) 
Version 1.5.0-alpha01
March 12, 2025
androidx.window:window-*:1.5.0-alpha01 is released. Version 1.5.0-alpha01 contains these commits.
New Features
- Initial release of next 1.5.0.
 
Version 1.4
Version 1.4.0
May 20, 2025
androidx.window:window-*:1.4.0 is released. Version 1.4.0 contains these commits.
Important changes since 1.3.0
- Activity Embedding
- API to customize the launch animations
 - Interactive Divider
 ActivityStackPinning- Full Screen Dialog Dimming
 - Embedded Activity Window Info Callback
 - Improved 
ActivityStackManagement - Launch Activity into a specified 
ActivityStack 
 WindowMetricsCalculator- Improve testability support
 
WindowMetrics- Convenience methods to calculate 
withDpandheightDp - Update bounds check to 
isAtLeastand use lower bounds to support adding new values 
- Convenience methods to calculate 
 WindowSizeClass- Add way to calculate from 
WindowMetrics 
- Add way to calculate from 
 WindowInfoTracker- Add API to detect the supported postures on the device
 
Version 1.4.0-rc02
April 23, 2025
androidx.window:window-*:1.4.0-rc02 is released. Version 1.4.0-rc02 contains these commits.
Bug Fixes
- Fix a proguard crash for 
ActivityEmbedding. 
Version 1.4.0-rc01
March 12, 2025
androidx.window:window-*:1.4.0-rc01 is released. Version 1.4.0-rc01 contains these commits.
New Features
- Updates to the 
WindowSizeClassAPI. - Updates to Activity Embedding APIs.
 
Version 1.4.0-beta02
February 12, 2025
androidx.window:window-*:1.4.0-beta02 is released. Version 1.4.0-beta02 contains these commits.
New Features
- Fix an annotation that was only on the property but not the getter.
 
Version 1.4.0-beta01
January 15, 2025
androidx.window:window-*:1.4.0-beta01 is released. Version 1.4.0-beta01 contains these commits.
New Features
- Add API to allow customizing 
ActivityEmbeddingAnimations. - Expand 
WindowMetricsCalculatortest APIs to allow faking the window metrics. 
API Changes
- Hide a few constructors (I87b8d)
 - Allow apps to customize 
ActivityEmbeddinganimations (If31a8) - Adds support for 
watchosDeviceArm64KMP target and target kotlin 1.9 (Icf15d, b/364652024) - Expose 
WindowMetricsCalculatorAPIs. (I1cebf) 
Bug Fixes
- This library now uses JSpecify nullness annotations, which are type-use. Kotlin developers should use the following compiler argument to enforce correct usage: 
-Xjspecify-annotations=strict(this is the default starting with version 2.1.0 of the Kotlin compiler). (Ie69ac, b/326456246) 
Version 1.4.0-alpha05
October 16, 2024
androidx.window:window-*:1.4.0-alpha05 is released. Version 1.4.0-alpha05 contains these commits.
New Features
- Add convenience functions to get the 
widthDpandheightDpfromWindowMetrics. 
API Changes
- Add 
widthDpandheightDptoWindowMetrics. (Ide026) - Remove experimental 
WindowInsetsAPI. (I68a71) - Update bounds check method names to 
isAtLeast(Ib0ab7) 
Version 1.4.0-alpha04
October 2, 2024
androidx.window:window-*:1.4.0-alpha04 is released. Version 1.4.0-alpha04 contains these commits.
API Changes
- Added a method to compute the 
WindowSizeClassfromWindowMetrics. (874dba) - Change the 
WindowSizeClassmethods tocontainsWidthDp,containsHeightDp, andcontainsWindowSizeDpfor clarity. (fa760d) - Convert 
WindowAreaControllerto abstract base class. (I90893) 
Bug Fixes
- Add support for relative bounds when creating a test 
FoldingFeature. (2e6b3e) - General bug fixes when selecting a 
WindowSizeClass. 
Version 1.4.0-alpha03
September 18, 2024
androidx.window:window-*:1.4.0-alpha03 is released. Version 1.4.0-alpha03 contains these commits.
New Features
- Add a utility method to get a 
WindowSizeClassfromWindowMetrics. (I83f1f) - Rename 
isAtLeasttocontainsBreakpoint. (I85b47) - Add overload to 
computeWindowSizeClassusing floats. (I3dcb2, b/364677934, b/364677802, b/364680886) 
Bug Fixes
- Add missing breakpoints to the default 
WindowSizeClassbreakpoint set. - Fixed a bug where compact dimensions were not being selected correctly in some cases.
 
Version 1.4.0-alpha02
September 4, 2024
androidx.window:window-*:1.4.0-alpha02 is released. Version 1.4.0-alpha02 contains these commits.
New Features
Add support for custom WindowSizeClass.
- Open the constructor for 
WindowSizeClassso devs can use their own. - Add 
isAtLeastutility methods so that developers can process a range ofWindowSizeClassvalues. - Add an extension function on 
Set<WindowSizeClass>to compute the best match from the Set. - Add constants for the Android recommended breakpoints.
 - Add the breakpoint set corresponding to the Android recommended breakpoints.
 
API Changes
- Update bounds method names for 
WindowSizeClass. (If89a6) - Update the 
WindowSizeClassAPI to support adding new breakpoint values in the future. Instead of having absolute bounds we use the lower bounds and recommend devs use lower bound checks when processing aWindowSizeClass. The existingWindowWidthSizeClassandWindowHeightSizeClasswill be deprecated as they will not be developed further. (I014ce) 
Version 1.4.0-alpha01
August 7, 2024
androidx.window:window-*:1.4.0-alpha01 is released. Version 1.4.0-alpha01 contains these commits.
New Features
- ActivityStack Pinning allows apps to pin the content in one container and have its navigation isolated from the other container.
 - Interactive Divider allows apps to display a fixed or draggable divider between the two activities in a split presentation.
 - Fullscreen Dialog Dimming allows apps to specify the dialog dim area, to either dim the entire task window or only dim the container that shows the dialog.
 - Embedded Activity Window Info Callback allows apps to continuously receive updates of the embedded activity window.
 - Embedding Animation Background allows apps to specify the animation background, improving the transition animation quality when 
ActivityEmbeddingis used. - Improved ActivityStack Management allows apps to have more control over the 
ActivityStackswhenActivityEmbeddingis used, including: - Launching an activity into a specified 
ActivityStack - Finishing an 
ActivityStack 
API Changes
A new API
WindowInfoTracker#supportedPostures:- An API to determine if the device supports TableTop mode for foldables. Adds WindowAreaSessionPresenter#getWindow
 
Add APIs to support
ActivityStackpinning:SplitPinRuleclassSplitController#pinTopActivityStackSplitController#unpinTopActivityStack
Add APIs to enable and configure the interactive divider
DividerAttributesclassSplitAttributes.Builder#setDividerAttributes
Add APIs to set
EmbeddingConfigurationandDimAreaBehaviorfor dialogsEmbeddingConfigurationclassDimAreaBehaviorclassActivityEmbeddingController#setEmbeddingConfiguration
Add APIs to receive embedded activity window info updates
EmbeddedActivityWindowInfoclassActivityEmbeddingController#embeddedActivityWindowInfo
Add APIs to set embedding animation background
EmbeddingAnimationBackgroundSplitAttributes.Builder#setAnimationBackground
Add APIs to finish
ActivityStacksActivityEmbeddingController#finishActivityStacks
Add APIs to set launching
ActivityStackActivityEmbeddingOptions#setLaunchingActivityStack
The following APIs are stable and no longer experimental:
ActivityEmbeddingController#invalidateVisibleActivityStacks(moved from SplitController#invalidateTopVisibleSplitAttributes)ActivityEmbeddingController#getActivityStackSplitController#updateSplitAttributes
Add APIs for 1.4. (I56774)
Bug Fixes
- Fixes bug on certain devices where UNAVAILABLE would be returned instead of ACTIVE when a session is active.
 - Removes support for 
transferActivityToWindowAreaon devices with avendorApiLevelof 2 due to unstable API support. - Introduce API to enable drag-to-fullscreen for Activity Embedding draggable divider. (I645c9)
 - Allow apps to disable 
ActivityEmbeddinganimations via animation params forSplitAttributes. (Idc01a) - Removed manual outlining of access to new platform APIs since this happens automatically via API modeling when using R8 with AGP 7.3 or later (e.g. R8 version 3.3) and for all builds when using AGP 8.1 or later (e.g. D8 version 8.1). Clients who are not using AGP are advised to update to D8 version 8.1 or later. See this article for more details. (Ia60e0, b/345472586)
 - Allow extensions to take animation params for 
SplitAttributesso that the device can use it for animation transitions. (Iede00) - Hide overlay APIs (Ic4251)
 - Introduce APIs to configure the fixed or draggable divider for the split (Ia7a78)
 - Added density to 
WindowMetrics(Id6723) - Add API to get the 
SupportedPostures. (If557a) - Remove 
setLaunchingActivityStackfrom experimental API (I191cf) - Introduce 
ActivityEmbeddingController#embeddedActivityWindowInfo(I24312) - Deprecate 
#getTokenand add#getActivityStackToken(Ie0471) - Introduce callback adapter for 
embeddedActivityWindowInfoflow API (Ida77f) - Add callback adapter for overlayInfo flow API (I7264f)
 - Introduce 
WindowSdkExtensionsRuleto overrideextensionsVersionfor testing. (Ifb928) - - Migrate 
#setLaunchingActivityStackto Bundle to compat withActivityOptionsCompatusages.- Users should pass 
activityOptions.toBundleinstead ofActvityOptionsitself. - Remove 
#setLaunchingActivityStack(Activity). Users should migrate to useActivityEmbeddingController#getActivityStac(Activity)to get anActivityStack, and pass theActivityStackto#setLaunchingActivityStack. (Ie0ccc) 
 - Users should pass 
 - - Introduce 
ActivityStack.TokenandSpltInfo.Tokenas an identifier to communicate between WM Jetpack and extensions.- Deprecate/Replace APIs to take/return Token instead of IBinder. (I12b24)
 
 - - Introduce 
ActivityEmbeddingController#invalidateVisibleActivityStacks- Remove 
SplitController#invalidateTopVisibleSplitAttributesbecause the feature is consolidate to#invalidateVisibleActivityStacks(I02ef5) 
 - Remove 
 - - Adding API to set embedding configuration. (I59a4a)
 - - Adding pin/unpin top 
ActivityStackandroidx.WindowAPIs- Updating demo app to allow pin/unpin top 
ActivityStack(I24dd3) 
 - Updating demo app to allow pin/unpin top 
 - Re-add 
#finishActivityStacksandActivityEmbeddingOptions(Ic1ab3) - Remove unstable APIs. (Ibc534, b/302380585)
 
Version 1.3
Version 1.3.0
May 29, 2024
androidx.window:window-*:1.3.0 is released. Version 1.3.0 contains these commits.
Important changes since 1.2.0
- Kotlin Multiplatform support for Window Size Classes.
 
Version 1.3.0-rc01
May 14, 2024
WindowManager Jetpack 1.3 brings Kotlin Multiplatform support for WindowSizeClass features as well as multiple bug fixes.
androidx.window:window-*:1.3.0-rc01 is released. Version 1.3.0-rc01 contains these commits.
Version 1.3.0-beta02
May 1, 2024
androidx.window:window-*:1.3.0-beta02 is released. Version 1.3.0-beta02 contains these commits.
API Changes
- Remove support for creating and using custom 
WindowSizeClass's. (Id1143) 
Bug Fixes
- Fixes 
KotlinReflectionInternalErrorcaused by proguard stripping out some files on certain device implementations. (I01b02) 
Version 1.3.0-beta01
April 3, 2024
androidx.window:window-*:1.3.0-beta01 is released. Version 1.3.0-beta01 contains these commits.
Version 1.3.0-alpha03
March 6, 2024
androidx.window:window-*:1.3.0-alpha03 is released. Version 1.3.0-alpha03 contains these commits.
API Changes
- Split 
WindowSizeClassUtilinto more focused methods. (Ie9292) - Restore 
WindowSizeClass#compute(I21355, b/324293374) 
Bug Fixes
- Fixes crash where the context provided wasn't being unwrapped correctly. (94d10ce , b/318787482)
 
Version 1.3.0-alpha02
February 7, 2024
androidx.window:window-*:1.3.0-alpha02 is released. Version 1.3.0-alpha02 contains these commits.
New Features
- Updates made to the API surface of the Window Size Class API's to improve flexibility for developers who want to use their own size classes.
 
API Changes
- Add height constraints to the width selector. (I23393)
 - Add utility functions for picking a 
WindowSizeClassfrom a set. Add experimental scoring functions so developers can write their own selectors. Add a selector extension function to pick the widestWindowSizeClasswithin a given bound. (I0c944) - Open the 
WindowSizeClassconstructor so custom breakpoints can be added. (Ic1ff3) - Add convenience function to create size class from width, height, and density. (If67f4)
 
Bug Fixes
- Fix exception when float value is truncated to 0. (272ffac)
 
Version 1.3.0-alpha01
November 15, 2023
androidx.window:window-*:1.3.0-alpha01 is released. Version 1.3.0-alpha01 contains these commits.
New Features
- Expose experimental window APIs for accessing the rear screen.
 - Test APIs for creating a 
FoldingFeatureis now stable. - Test APIs for setting up fake 
ActivityEmbeddingvalues are now stable. WindowLayoutInfoPublisherRulenow reports the override when obtaining a value from aUiContext.WindowInfoTrackerreports folding feature data toUiContextparameters.- Expose the Extensions Version on the device.
 WindowPropertiesconstants for user per-app overrides:PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE— Informs the system the app has opted out of the user-facing aspect ratio compatibility override.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE— Informs the system the app has opted out of the full-screen option of the user aspect ratio compatibility override settings
Version 1.2
Version 1.2.0
November 15, 2023
androidx.window:window-*:1.2.0 is released. Version 1.2.0 contains these commits.
Important changes since 1.1.0
- Expose experimental window APIs for accessing the rear screen.
 - Test APIs for creating a 
FoldingFeatureis now stable. - Test APIs for setting up fake 
ActivityEmbeddingvalues are now stable. WindowLayoutInfoPublisherRulenow reports the override when obtaining a value from aUiContext.WindowInfoTrackerreports folding feature data toUiContextparameters.- Expose the Extensions Version on the device.
 
Version 1.2.0-rc01
November 1, 2023
androidx.window:window-*:1.2.0-rc01 is released. Version 1.2.0-rc01 contains these commits.
New Features
- Expose experimental window APIs for accessing the rear screen.
 - Test APIs for creating a 
FoldingFeatureis now stable. - Test APIs for setting up fake 
ActivityEmbeddingvalues are now stable. WindowLayoutInfoPublisherRulenow reports the override when obtaining a value from aUiContext.WindowInfoTrackerreports folding feature data toUiContextparameters.- Expose the Extensions Version on the device.
 
Version 1.2.0-beta04
October 18, 2023
androidx.window:window-*:1.2.0-beta04 is released. Version 1.2.0-beta04 contains these commits.
API Changes
- Remove unstable APIs. (Ibc534, b/302380585)
 
Version 1.2.0-beta03
September 20, 2023
androidx.window:window-*:1.2.0-beta03 is released. Version 1.2.0-beta03 contains these commits.
New Features
- Add 
RequiresApichecks for APIs that need a specific version of extensions to function correctly. - Add an API to expose the extensions version on the device.
 
API Changes
- Annotate required window SDK extension version on public APIs.
- Remove 
isXXXSupportedin the Activity Embedding component. (Ie3dae) 
 - Remove 
 - Introduce 
WindowSdkExtensionsto report the extension version on the device.- Introduce 
RequiresWindowSdkExtensionto annotate the minimum required extension version. (I05fd4) 
 - Introduce 
 - Makes 
WindowAreaInfo#getCapabilitynon-nullable. (I17048) 
Version 1.2.0-beta01
July 26, 2023
androidx.window:window-*:1.2.0-beta01 is released. Version 1.2.0-beta01 contains these commits.
New Features
- Expose experimental window APIs for accessing the rear screen.
 - Test APIs for creating a 
FoldingFeatureis now stable. - Test APIs for setting up fake 
ActivityEmbeddingvalues are now stable. WindowLayoutInfoPublisherRulenow reports the override when obtaining a value from aUiContext.WindowInfoTrackerreports folding feature data toUiContextparameters.
API Changes
- Marks 
WindowAreaAPI's as experimental to allow API changes to continue for a stable release in 1.3 (I857f5) - Updated API files to annotate compatibility suppression (I8e87a, b/287516207)
 
Version 1.2.0-alpha03
June 21, 2023
androidx.window:window-*:1.2.0-alpha03 is released. Version 1.2.0-alpha03 contains these commits.
New Features
- Removing deprecated APIs from the API surface.
 - Add APIs to support concurrent displays.
 - Add a property to opt out of forced resize override.
 - Add property to opt out of min aspect ratio override.
 - Stabilize 
ActivityEmbeddingRuleto support unit testing around Activity Embedding. 
API Changes
Bug Fixes
- Adding opt-out compat property for force resize override (Ie7ab1)
 - Removes 
SESSION_STATE_CONTENT_INVISIBLEfrom extensions interface. (I6ed19) - Stabilize 
ActivityEmbeddingRuleto support unit testing around Activity embedding. (I8d6b6) - Adding opt-out compat property for min aspect ratio override. (I66390)
 - Removes deprecated WindowArea API's (Ieb67c)
 - Rename orientation request loop property to 
PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED. (Ie2fbd) - Updates window area session constant names (I83675)
 - Adding opt-out compat property that ignores orientation request loop when detected (I0a7a2)
 - Add 
WindowAreaComponent#STATUS_ACTIVEto signify that the feature is already active. (I62bc3) - Add 
RearDisplayPresentationModeAPIs (I0401c) - Remove background color API for stable. (I34c3e)
 - Hide Window Area APIs. (I39de0)
 - Add methods to override the 
SplitInfoinSplitController. Add test methods to create double forSplitInfoandActivityStack. (Icd69f) - Make tag optional for 
ActivityRule.Builder. (Ib0b44) - Remove 
RatioSplitType,ExpandContainersSplitandHingeSplitType. They areSplitTypenow.- Replace 
#splitEqually(),#expandContainers()and#splitByHingeto constantSplitType SPLIT_TYPE_EQUAL,SPLIT_TYPE_EXPANDandSPLIT_TYPE_HINGE - Remove the functionality to set fallback type of hinge split type. If the hinge split type cannot be applied due to the current device or window state, it fallbacks to split the parent task container equally. Use 
SplitController#setSplitAttributesCalculatorto customize the fallback split type. (Ifcc59) 
 - Replace 
 - Deprecate 
add/removeSplitCallback- Move 
add/removeSplitCallbacktoSplitControllerCallbackAdapter - Add 
Flowsupport to getSplitInfolist (I7f1b6) 
 - Move 
 - Add a test rule for 
ActivityEmbeddingController(I42e9b) - Renaming 
ActivityOptionsCompattoActivityEmbeddingOptions(I89301) - Add 
splitSupportStatusto indicate if Activity embedding is available. (I10024) - Introduce 
SplitAttributes.BackgroundColorto better represent theDEFAULTvalue. Clarify that non-opaque animation background color is not supported, so any non-opaque colors will be treated as the default, which means to use the current theme window background color. (Ic6b95) - Replace 
alwaysAllow()andalwaysDisallow()withALWAYS_ALLOWandALWAYS_DISALLOW. (I3057b) - Add APIs for 
SplitRule,SplitAttributes,SplitAttributesCalculator. (I92d23) - Add 
TestActivityStackto createActivityStackfor testing- Add 
TestSplitInfoto createSplitInfofor testing. (I8e779) 
 - Add 
 - Add a way to create fake 
SplitAttributesCalculatorParamsso that developers can verify their customizedSplitAttributesCalculator(Id4a6e) - Add 
WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)andWindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context)(I66c7f) 
Version 1.2.0-alpha02
June 7, 2023
androidx.window:window-*:1.2.0-alpha02 is released. Version 1.2.0-alpha02 contains these commits.
New Features
- Update test API to have a constant for unspecified folding features.
 - Overriding with 
WindowLayoutInfoPublishRulewill override all values ofwindowLayoutInfo, including the Context based API. 
API Changes
- Add constant for unspecified center folding feature. (I7530c)
 
Bug Fixes
- Update 
WindowLayoutInfoPublishRuleto support overrides onContextbasedWindowLayoutInfo. (I2037a) 
Version 1.2.0-alpha01
May 24, 2023
androidx.window:window-*:1.2.0-alpha01 is released. Version 1.2.0-alpha01 contains these commits.
New Features
Stabilize testing APIs around Activity Embedding and WindowLayoutInfoTracker. ActivityEmbeddingRule has been promoted to stable.
WindowMetricsCalculatorRule has been promoted to stable.
Utility functions to create a FoldingFeature for test have been promoted to stable.
API Changes
- Stabilize 
ActivityEmbeddingRuleto support unit testing around Activity embedding. (I8d6b6) WindowMetrisCalculatorTestRuleis stable allowing stub metrics for JVM tests. We recommend using an emulator for accurate results.- Stabilize test APIs for 
WindowLayoutInfoto support JVM testing. (Ie036e) - Add 
IntRangefor test folding feature values. (I69f7d) 
Version 1.1
Version 1.1.0
June 7, 2023
androidx.window:window-*:1.1.0 is released. Version 1.1.0 contains these commits.
Important changes since 1.0.0
Activity Embedding
- Added 
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLEDas a boolean property of the<application>tag in the app manifest. - Deprecated 
isSplitSupportedand replaced withsplitSupportStatusto provide more detailed information about why the split feature is not available. - Added the 
SplitController.SplitSupportStatusnested class to provide state constants for thesplitSupportStatusproperty. - Refactored 
SplitControllerto several modules:ActivityEmbeddingControllermodule forActivityorActivityStackrelated APIs.- Moved 
isActivityEmbeddedfromSplitControllertoActivityEmbeddingController. RuleControllermodule forEmbeddingRulerelated operations:- Removed 
SplitControllerAPIs: clearRegisteredRules()getSplitRules()initialize()registerRule()unregisterRule()- Added 
RuleControllerAPIs: addRule()— Adds a rule or updates the rule that has the same tag.removeRule()— Removes a rule from the collection of registered rules.setRules()— Establishes a collection of rules.clearRules()— Removes all registered rules.parseRules()— Parses rules from XML rule definitions.
 - All modules require a context to be initialized by 
#getInstance()method, including:ActivityEmbeddingController#getInstance(Context)SplitController#getInstance(Context)RuleController#getInstance(Context)
 - Added the 
EmbeddingAspectRatioclass to define enum-like behavior constants related to display aspect ratio. - Added the 
SplitAttributesclass to define the split layout. - Added 
SplitAttributescalculator functions toSplitControllerto customize split layouts:setSplitAttributesCalculator(Function)clearSplitAttributesCalculator()isSplitAttributesCalculatorSupported()to check if theSplitAttributesCalculatorAPIs are supported on the device
 - Added 
EmbeddingRule#tagfield. - API updates in 
SplitRule:- Added 
defaultSplitAttributes— Defines the default split layout of a split; replacessplitRatioandlayoutDirection. - Added translation of the XML properties 
splitRatioandsplitLayoutDirectiontodefaultSplitAttributes. - Changed minimum dimension definitions to use density-independent pixels (dp) instead of pixels.
 - Added 
minHeightDpwith default value 600dp. - Changed 
minWidthtominWidthDpwith default value 600dp. - Changed 
minSmallestWidthtominSmallestWidthDpwith default value 600dp. - Added 
maxAspectRatioInHorizontalwith default valueALWAYS_ALLOW. - Added 
maxAspectRatioInPortraitwith default value 1.4. - Defined 
FinishBehaviornested class to replace finish behavior constants. - Applied the property changes to the Builder nested class of 
SplitPairRuleandSplitPlaceholderRule. 
 - Added 
 - Replaced 
SplitInfo#getSplitRatio()withSplitInfo#getSplitAttributes()to provide additional split-related information. 
WindowLayout
- Added experimental non-activity UI context support to 
WindowInfoTracker. - Added experimental non-activity UI context to 
WindowMetricsCalculator. 
Migration Steps
- To enable activity embedding to display activities in splits, apps must add the 
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLEDproperty to the manifest<application>tag:xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />This allows the system to optimize the split behaviors for an application ahead of time. SplitInforatio- Check if the current split is stacked:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType - Check the current ratio:
kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. } 
- Check if the current split is stacked:
 - SplitController migrations:
SplitController.getInstance()changes toSplitController.getInstance(Context).SplitController.initialize(Context, @ResId int)changes toRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).SplitController.getInstance().isActivityEmbedded(Activity)changes toActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).SplitController.getInstance().registerRule(rule)changes toRuleController.getInstance(Context).addRule(rule).SplitController.getInstance().unregisterRule(rule)changes toRuleController.getInstance(Context).removeRule(rule).SplitController.getInstance().clearRegisteredRules()changes toRuleController.getInstance(Context).clearRules().SplitController.getInstance().getSplitRules()changes toRuleController.getInstance(Context).getRules().
 SplitRuleproperty migrations:minWidthandminSmallestWidthnow use dp units instead of pixels. Apps can use the following call:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )or simply divideminWithin pixels bydisplayMetrics#density.
- Finish behavior constants must be migrated to 
FinishBehaviorenum-like class constants:FINISH_NEVERchanges toFinishBehavior.NEVER.FINISH_ALWAYSchanges toFinishBehavior.ALWAYS.FINISH_ADJACENTchanges toFinishBehavior.ADJACENT.
 - Layout direction must be migrated to 
SplitAttributes.LayoutDirection:ltrchanges toSplitAttributes.LayoutDirection.LEFT_TO_RIGHT.rtlchanges toSplitAttributes.LayoutDirection.RIGHT_TO_LEFT.localechanges toSplitAttributes.LayoutDirection.LOCALE.splitRatiomust be migrated toSplitAttributes.SplitType.ratio(splitRatio).
 SplitPairRule.Buildermigrations:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)changes tokotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.setLayoutDirection(layoutDirection)andsetSplitRatio(ratio)changes tokotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )setFinishPrimaryWithSecondaryandsetFinishSecondaryWithPrimarytake theFinishBehaviorenum-like constants. See “SplitRule migrations” for details.- Use 
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)to show splits on portrait devices. 
SplitPlaceholder.Buildermigrations:- Has only 
filtersandplaceholderIntentparameters. Other properties move to setters. See “SplitPairRule.Builder migrations” for details. setFinishPrimaryWithPlaceholdertakes theFinishBehaviorenum-like constants. See “SplitRule migrations” for details.setLayoutDirection(layoutDirection)andsetSplitRatio(ratio)change to:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )- Use 
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)to show splits on portrait devices. 
- Has only 
 
Version 1.1.0-rc01
May 10, 2023
androidx.window:window-*:1.1.0-rc01 is released. Version 1.1.0-rc01 contains these commits.
New Features
- Release 
ActivityEmbeddingas a stable API. - Various bug fixes.
 
Version 1.1.0-beta02
April 5, 2023
androidx.window:window-*:1.1.0-beta02 is released. Version 1.1.0-beta02 contains these commits.
New Features
- Internal fixes and clean up.
 
Version 1.1.0-beta01
March 22, 2023
androidx.window:window-*:1.1.0-beta01 is released. Version 1.1.0-beta01 contains these commits.
Activity Embedding
- Added 
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLEDas a boolean property of the<application>tag in the app manifest. - Deprecated 
isSplitSupportedand replaced withsplitSupportStatusto provide more detailed information about why the split feature is not available. - Added the 
SplitController.SplitSupportStatusnested class to provide state constants for thesplitSupportStatusproperty. - Refactored 
SplitControllerto several modules:ActivityEmbeddingControllermodule forActivityorActivityStackrelated APIs.- Moved 
isActivityEmbeddedfromSplitControllertoActivityEmbeddingController. RuleControllermodule forEmbeddingRulerelated operations:- Removed 
SplitControllerAPIs:clearRegisteredRules()getSplitRules()initialize()registerRule()unregisterRule()
 - Added 
RuleControllerAPIs:addRule()— Adds a rule or updates the rule that has the same tag.removeRule()— Removes a rule from the collection of registered rules.setRules()— Establishes a collection of rules.clearRules()— Removes all registered rules.- `parseRules() — Parses rules from XML rule definitions.
 
 
 - All modules require a context to be initialized by 
#getInstance()method, including:ActivityEmbeddingController#getInstance(Context)SplitController#getInstance(Context)RuleController#getInstance(Context)
 - Added the 
EmbeddingAspectRatioclass to define enum-like behavior constants related to display aspect ratio. - Added the 
SplitAttributesclass to define the split layout. - Added 
SplitAttributescalculator functions toSplitControllerto customize split layouts:setSplitAttributesCalculator(Function)clearSplitAttributesCalculator()isSplitAttributesCalculatorSupported()to check if the SplitAttributesCalculator APIs are supported on the device
 - Added 
EmbeddingRule#tagfield. - API updates in 
SplitRule:- Added 
defaultSplitAttributes— Defines the default split layout of a split; replacessplitRatioandlayoutDirection. - Added translation of the XML properties 
splitRatioandsplitLayoutDirectiontodefaultSplitAttributes. - Changed minimum dimension definitions to use density-independent pixels (dp) instead of pixels.
 - Added 
minHeightDpwith default value 600dp. - Changed 
minWidthtominWidthDpwith default value 600dp. - Changed 
minSmallestWidthtominSmallestWidthDpwith default value 600dp. - Added 
maxAspectRatioInHorizontalwith default valueALWAYS_ALLOW. - Added 
maxAspectRatioInPortraitwith default value1.4. - Defined 
FinishBehaviornested class to replace finish behavior constants. - Applied the property changes to the 
Buildernested class ofSplitPairRuleandSplitPlaceholderRule. 
 - Added 
 - Replaced 
SplitInfo#getSplitRatio()withSplitInfo#getSplitAttributes()to provide additional split-related information. 
WindowLayout
- Added non-activity UI context support to  
WindowInfoTracker. - Added non-activity UI context to 
WindowMetricsCalculator. 
Migration Steps
- To enable activity embedding to display activities in splits, apps must add the 
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLEDproperty to the manifest<application>tag:xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />This allows the system to optimize the split behaviors for an application ahead of time. SplitInforatio- Check if the current split is stacked:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType - Check the current ratio:
kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. } 
- Check if the current split is stacked:
 SplitControllermigrations:SplitController.getInstance()changes toSplitController.getInstance(Context).SplitController.initialize(Context, @ResId int)changes toRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).SplitController.getInstance().isActivityEmbedded(Activity)changes toActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).SplitController.getInstance().registerRule(rule)changes toRuleController.getInstance(Context).addRule(rule).SplitController.getInstance().unregisterRule(rule)changes toRuleController.getInstance(Context).removeRule(rule).SplitController.getInstance().clearRegisteredRules()changes toRuleController.getInstance(Context).clearRules().SplitController.getInstance().getSplitRules()changes toRuleController.getInstance(Context).getRules().
SplitRuleproperty migrations:minWidthandminSmallestWidthnow use dp units instead of pixels. Apps can use the following call:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )or simply divideminWithin pixels bydisplayMetrics#density.
- Finish behavior constants must be migrated to 
FinishBehaviorenum-like class constants:FINISH_NEVERchanges toFinishBehavior.NEVER.FINISH_ALWAYSchanges toFinishBehavior.ALWAYS.FINISH_ADJACENTchanges toFinishBehavior.ADJACENT.
 - Layout direction must be migrated to 
SplitAttributes.LayoutDirection:ltrchanges toSplitAttributes.LayoutDirection.LEFT_TO_RIGHT.rtlchanges toSplitAttributes.LayoutDirection.RIGHT_TO_LEFT.localechanges toSplitAttributes.LayoutDirection.LOCALE.splitRatiomust be migrated toSplitAttributes.SplitType.ratio(splitRatio).
 SplitPairRule.Buildermigrations:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)changes tokotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.setLayoutDirection(layoutDirection)andsetSplitRatio(ratio)change tokotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )setFinishPrimaryWithSecondaryandsetFinishSecondaryWithPrimarytake theFinishBehaviorenum-like constants. See “SplitRule migrations” for details.- Use 
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)to show splits on portrait devices. 
SplitPlaceholder.Buildermigrations:- Has only 
filtersandplaceholderIntentparameters. Other properties move to setters. See “SplitPairRule.Builder migrations” for details. setFinishPrimaryWithPlaceholdertakes theFinishBehaviorenum-like constants. See “SplitRule migrations” for details.setLayoutDirection(layoutDirection)andsetSplitRatio(ratio)change to:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )- Use 
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)to show splits on portrait devices. 
- Has only 
 
Version 1.1.0-alpha06
February 22, 2023
androidx.window:window-*:1.1.0-alpha06 is released. Version 1.1.0-alpha06 contains these commits.
New Features
- Expose experimental version of getting the 
WindowLayoutInfofrom a UI context. 
API Changes
- Add 
splitSupportStatusto indicate if Activity embedding is available. (I10024) - Make UI Context 
WindowLayoutInfoAPI as experimental. (I58ee0) - Introduces the 
WindowAreaControllerand API's to enableRearDisplayMode to move the current window to the display that is aligned with the rear camera. (Iffcbf) - Update default background color. (I1ac1b)
 - Add 
SplitAttributesparams. (I18bdd) - Add APIs for 
SplitRule,SplitAttributes,SplitAttributesCalculator. (I92d23) - Improve the APIs around 
maxAspectRatio:- Replace 
alwaysAllow()andalwaysDisallow()withALWAYS_ALLOWandALWAYS_DISALLOW. - Update API documentation of @see with standalone documentation. (I3057b)
 
 - Replace 
 - The following constructors are removed from public APIs because they are not supposed to be called by apps.
SplitInfoconstructorActivityStackconstructor (Ide534)
 SplitRulenow takesmaxAspectRatioInPortrait/Landscape. It only allows activities split when the aspect ratio of the parent bounds is smaller or equal to the requestedmaxAspectRatio. (Ia5990)- Change 
RuleController#parseRulesto be static (I785df) - Improve the APIs around ActivityEmbedding
- Align the API naming - Use add/remove for multiple instances:
 registerRulechanges toaddRuleunregisterRulechanges toremoveRule- Replace 
getSplitRuleswithgetRulessinceActivityRuleis not a split rule - Add 
RuleController#setRulesto set a bunch of rules - Extract rule related APIs from 
SplitControllerto singletonRuleController. They are: addRuleremoveRulegetRulessetRulesclearRulesparseRules- Extract 
#isActivityEmbeddedfromSplitControllerto singletonActivityEmbeddingController. They are: isActivityEmbedded- Remove 
SplitController#initialize. To set rules from XML file, please useRuleController#parseRulesand#setRules. Before this change:SplitController.initialize(context, R.xml.static_rules)After this change:val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) - We don't distinguish static rules with runtime rules anymore. That said, calling 
#clearRulesresults to clear all rules no matter they are registered with static XML rule definitions or at runtime. To hav the legacy behavior ofSplitController#clearRegisteredRules, please callRuleController#parseRuleswith the XML resources id and callRuleController#setRulesto set back the rules again. Before this change:SplitController.getInstance(context).clearRegisteredRules()After this change:val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)(Ib3967) 
 - Improve the SplitRule APIs:
- Take min dimensions in DP instead of pixels for 
SplitRule. - Refactor for 
SplitRuleBuilder to take min dimensions as optional. (I95f17) 
 - Take min dimensions in DP instead of pixels for 
 - Pass a Context to initialize 
SplitController(I42549) - Renamed 
SplitRule#layoutDirto#layoutDirectionandSplitRule Builder#setLayoutDirtoBuilder#setLayoutDirection. (I3f6d1) 
Version 1.1.0-alpha04
November 9, 2022
androidx.window:window-*:1.1.0-alpha04 is released. Version 1.1.0-alpha04 contains these commits.
New Features
- Expose a method to determine if an 
ActivityStackis empty forActivityEmbedding. - Removed experimental API tags from 
ActivityEmbeddingAPIs. - Hide 
ActivityRuleconstructor as theBuilderis the preferred way to construct. - Add an experimental method to get the 
WindowInsetsonWindowMetrics. - Update 
SplitPlaceholderFinishBehaviorto prevent finishing the placeholder. Finishing the placeholder caused some confusing behavior. 
API Changes
- Make val 
isEmptypublic to replace funisEmpty. - Rename 
ActivityStackparameter activities toactivitiesInProcess. (Ia5055) - Remove 
ActivityFilter#matchesClassNameandActivityFilter#matchesClassNameOrWildCardbecause they are confusing. - Add 
ActivityFilter#componentNameabdActivityFilter#intentActionto allow the caller to distinguish different filters (I41f22) - Remove the 
@DeprecatedAPIs from the experimental API (I216b3) - Remove 
@ExperimentalWindowApifor Activity Embedding APIs (I69ebe) - Hide 
ActivityRuleconstructor, use Builder instead. (If4eb6) - Add APIs to check if an Activity is part of the 
ActivityFilter. (Ia43cf) - Update API files to reflect changes in 
WindowMetricsandWindowMetricsCalculatorCompatclasses (I667fe) - Update 
ActivityEmbeddingProperty Javadoc and class name (Ia1386) - Adding 
ActivityEmbeddingproperty tag names to be used in AndroidManifest.xml (Id1ad4) - Added new API 
SplitPlaceholderFinishBehaviorandSplitPlaceholderRule.finishPrimaryWithPlaceholder, this replaces existingSplitPlaceholderRule.finishPrimaryWithSecondarywhich defines when placeholder activites are finished, how associated activites in Activity Embedding should behave. (I64647) 
Bug Fixes
- Introduces the 
WindowAreaControllerand API's to enableRearDisplayMode to move the current window to the display that is aligned with the rear camera. (I388ab) 
Version 1.1.0-alpha03
July 27, 2022
androidx.window:window-*:1.1.0-alpha03 is released. Version 1.1.0-alpha03 contains these commits.
New Features
- Update the default values for embedding rules.
 
API Changes
- Update default values for embedding rule properties. (Ic4d35)
 
Version 1.1.0-alpha02
May 11, 2022
androidx.window:window-*:1.1.0-alpha02 is released. Version 1.1.0-alpha02 contains these commits.
New Features
- Release the adapter libraries to support Java and RxJava.
 
Version 1.1.0-alpha01
May 11, 2022
androidx.window:window-*:1.1.0-alpha01 is released. Version 1.1.0-alpha01 contains these commits.
New Features
- Release adapters to support java and RxJava
 
Version 1.1.0-alpha01
April 20, 2022
androidx.window:window:1.1.0-alpha01 is released. Version 1.1.0-alpha01 contains these commits.
New Features
- Fixes a bug where backgrounding an app stops emitting fold features.
 - Expand on the experimental ActivityEmbedding API.
 
API Changes
- A public API to check if an activity is being embedded. (I39eb7)
 
Bug Fixes
- Add APIs that customize finishing behavior for containers in activity splits (I1a1e4)
 - Added a new configuration option for activity split rules. (Iec6af)
 
Version 1.0
Version 1.0.0
January 26, 2022
androidx.window:window-*:1.0.0 is released. Version 1.0.0 contains these commits.
Major features of 1.0.0
- Support for folding phones through 
WindowInfoTrackerandFoldingFeature.WindowMetricsCalculatorto help calculate the current WindowMetrics. 
Version 1.0.0-rc01
December 15, 2021
androidx.window:window-*:1.0.0-rc01 is released. Version 1.0.0-rc01 contains these commits.
New Features
- Add support for folding phones through 
WindowInfoTracker. - Add methods to calculate the current and maximum 
WindowMetrics. - Add supporting test APIs.
 
Version 1.0.0-beta04
November 17, 2021
androidx.window:window-*:1.0.0-beta04 is released. Version 1.0.0-beta04 contains these commits.
New Features
- Rename WindowInfoRepository to WindowInfoTracker.
 - Make Activity an explicit method dependency for WindowInfoTracker.
 - Add a simple TestRule for WindowMetricsCalculator to support developers using Robolectric.
 
API Changes
- Extract extensions (I25a5f)
 - add isEmpty in ActivityStack (I5a4e6)
 - Rename WindowInfoRepository to WindowInfoTracker.
- Update java/rxjava/testing dependencies to match. (I0da63)
 
 - Add a test rule for a simple WindowMetricsCalculator. (Ibacdb)
 
Version 1.0.0-beta03
October 27, 2021
androidx.window:window-*:1.0.0-beta03 is released. Version 1.0.0-beta03 contains these commits.
New Features
- Add experimental Activity Embedding APIs. This initial layout version allows showing two Activities side by side.
 
API Changes
- Removed the currentWindowMetrics API since we can not provide it accurately. Please use WindowMetricsCalculator instead (Icda5f)
 - Updated the extensions api. (Ica92b)
 - Added an interface for a new feature that allows embedding activities and showing them side-by-side within the parent task window. (I5711d)
 - Hid the constructors for WindowMetrics and WindowLayoutInfo, please use the test APIs instead. (I5a1b5)
 - Add an API to create fake WindowLayoutInfo objects. (I4a2fd)
 
Bug Fixes
- Fixed memory leak. (I3fc79, b/202989046)
 
Version 1.0.0-beta02
September 1, 2021
androidx.window:window-*:1.0.0-beta02 is released. Version 1.0.0-beta02 contains these commits.
New Features
- Add an experimental annotation to annotate experimental APIs. (I9f1b6)
 - Add a test method to create a test FoldingFeature that accepts a Rect. This will make it easie to test when using Robolectric as opposed to an actual Activity. (Id1cca)
 
Version 1.0.0-beta01
August 18, 2021
androidx.window:window-*:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.
New Features
- Removed old constants and made 
FoldingFeatureinto an interface. 
API Changes
- Remove old constants and make FoldFeature an interface. (I9a2d5)
 
Bug Fixes
- Libraries that depend on the 
Test Corelibrary have been upgraded to version1.4.0and will now work with Android platform version S. (I88b72, b/189353863) 
Version 1.0.0-alpha10
August 4, 2021
androidx.window:window-*:1.0.0-alpha10 is released. Version 1.0.0-alpha10 contains these commits.
New Features
- Rename WindowInfoRepo to WindowInfoRepository and adjust corresponding classes / files.
 - Convert current window metrics to a Flow in WindowInfoRepository since the value changes over time.
 - Rename WindowInfoRepoJavaAdapter to WindowInfoRepoCallbackAdapter
 - Add helper method to create test FoldingFeature objects
 - Update packages to group classes based on the feature they are supporting.
 
API Changes
- Rename ActivityExt to ActivityExtensions Change from Repo to Repository. (I61a16)
 - Update packages for classes. (I23ae2)
 - Remove WindowMetrics from WindowInfoRepo (I24663)
 - Remove WindowManager and use WindowInfoRepo
- Make WindowBackend internal. (I06d9a)
 
 - Convert window metrics to Flow.
- Rename java adapter to WindowInfoRepoCallbackAdapter
 - Remove callbackFlow so no more experimental APIs are in use. (Ia4d15)
 
 - Add helper method to create test display features.
- Change from occlusionMode to occlusionType (If4cff)
 
 
Bug Fixes
- Fix proguard error where core library was being removed.
 - Fix error where WindowLayoutInfo was not being delivered to additional subscribers.
 - Fix error where config changes would not trigger folding feature updates.
 
Version 1.0.0-alpha09
June 30, 2021
androidx.window:window-*:1.0.0-alpha09 is released. Version 1.0.0-alpha09 contains these commits.
New Features
- Change from integer constants to unbounded enums.
 - Add a test util to create test folding features.
 
API Changes
- Add helper method to create test display features. (I3cf54)
- Change from 
occlusionModetoocclusionType. 
 - Change from 
 
Bug Fixes
- Emit initial value when adding multiple consumers of the data streams.
 
Version 1.0.0-alpha08
June 16, 2021
androidx.window:window-*:1.0.0-alpha08 is released. Version 1.0.0-alpha08 contains these commits.
New Features
- Released a testing artifact to make it easier to test when using WindowInfoRepository. Use WindowInfoRepository to get information about DisplayFeatures and the WindowMetrics. (I57f66, Ida620)
 
Version 1.0.0-alpha07
June 2, 2021
androidx.window:window-*:1.0.0-alpha07 is released. Version 1.0.0-alpha07 contains these commits.
New Features
- Migrate core window library to Kotlin. Will use coroutines and suspend functions to expose asynchronous data going forward.
 - Add WindowInfoRepo as the main interaction point for getting the WindowMetrics and the stream of WindowLayoutInfo.
 - New 
window-javaartifact to expose Java-friendly APIs to register and unregister callbacks. - New 
window-rxjava2andwindow-rxjava3artifacts to expose RxJava adapted APIs. 
API Changes
- Add 
WindowServicesto provide dependencies uniformly.- Add coroutine based api to consume window layout info. (Iab70f)
 
 - Migrate core window manager library to Kotlin. (Icca34)
 
Bug Fixes
- Add new data class to represent feature bounds. (I6dcd1)
 
Version 1.0.0-alpha06
May 5, 2021
androidx.window:window:1.0.0-alpha06 is released. Version 1.0.0-alpha06 contains these commits.
New Features
- We have started our migration to Kotlin and will finish in the next release.
 - DeviceState has been removed from the public API, please use FoldingFeature instead.
 - We have removed 
STATE_FLIPPEDfrom the FoldingFeature states since it is not supported by any use-case at the moment. - We have also removed other deprecated APIs.
 
API Changes
- Adding Kotlin as a dependency.
- Migrate core library to Kotlin. (Idd995)
 
 - Removed 
DisplayFeaturebuilder. (I61fa4) - Removed 
DeviceStatefrom public api, useFoldingFeatureinstead. (Id6079) - Remove device state callback from extensions. (I5ea83)
 - Remove 
STATE_FLIPPEDfrom FoldingFeature. (I9c4e1) - Remove deprecated registration methods. (Ib381b)
 
Version 1.0.0-alpha05
March 24, 2021
androidx.window:window:1.0.0-alpha05 is released. Version 1.0.0-alpha05 contains these commits.
New Features
We have added convenience methods to FoldingFeature so that apps can tell if the feature is separating, occluding, and determine the orientation of the hinge. We are also hiding the hinge type so that
We are removing the synchronous read methods from WindowManager. Synchronous read methods are error prone since there is an implicit race condition. Register listeners and callbacks to receive updates on the WindowLayoutInfo.
API Changes
- Add convenience methods for working with FoldingFeatures (Ie733f)
 - Removes synchronous read methods from WindowManager (I96fd4)
 
Version 1.0.0-alpha04
March 10, 2021
androidx.window:window:1.0.0-alpha04 is released. Version 1.0.0-alpha04 contains these commits.
New Features
- Fixes a bug where no WindowLayoutInfo is emitted if there isn’t an OEM implementation. Now we emit an empty WIndowLayoutInfo.
 - Fix a bug where state would not update properly if the hinge state changed while the app was backgrounded. Now the state should be consistent.
 - Update our proguard files to ignore warnings from runtime dependencies.
 
Bug Fixes
- Emit an empty value when the OEM library is missing. (Ide935)
 
Version 1.0.0-alpha03
February 18, 2021
androidx.window:window:1.0.0-alpha03 is released. Version 1.0.0-alpha03 contains these commits.
New Features
- Emit an empty value for WindowLayoutInfo when the OEM implementation is empty. This should make it easier to use the library on more devices. Since the APIs are asynchronous it is still recommended that apps write some defensive code and emit a default value after a timeout. We do not have any guarantees on OEM implementations and the initial value may be delayed.
 
Bug Fixes
- Emit an empty value when the OEM library is missing. (Ide935)
 
Version 1.0.0-alpha02
January 27, 2021
androidx.window:window:1.0.0-alpha02 is released. Version 1.0.0-alpha02 contains these commits.
New Features
We have deprecated some APIs to help streamline the api and reduce mistakes. Some notable examples are removing the synchronous read operations from WindowManager and deprecating DeviceState. Synchronous read operations can lead to race conditions and have incorrect UI.
We have converted DisplayFeature to an interface that other features will implement going forward. Our first feature is FoldingFeature which is now the representation of a screen fold or a hinge. This also contains the state of the hinge replacing DeviceState.
WindowMetrics was introduced in Android 11 to provide developers with a simple way to query for metrics about a window, for example its position and size on screen and any system insets. We’ve backported the API in this release so that developers can leverage WindowMetrics and continue to support older Android versions. WindowMetrics can be obtained through the
WindowManager#getCurrentWindowMetrics()and WindowManager#getMaximumWindowMetrics() APIs.
API Changes
- Deprecate APIs that will be removed in the next alpha (Ib7cc4)
 - Updates 
ExtensionInterfaceto accept explicit Activity references. (I07ded) - Introduces the WindowMetrics API. (I3ccee)
 - Remove synchronous read methods from WindowManager (I69983)
 - Make ExtensionWindowBackend package protected. (Ied208)
 
Bug Fixes
- Update 
ExtensionInterfaceAPIs to accept visual contexts. (I8e827) 
External Contribution
- Merge DeviceState and WindowLayoutInfo so it is easier to access data. (Id34f4)
 
Version 1.0.0-alpha01
February 27, 2020
androidx.window:window:1.0.0-alpha01 and androidx.window:window-extensions:1.0.0-alpha01
are released. Version 1.0.0-alpha01 contains these commits.
This is the first release of the Window Manager library.
New features
DisplayFeature: This new API identifies disruptions in the continuous flat screen surfaces such as hinges or foldsDeviceState: This new API provides the current posture of the phone from a list of defined postures (For example,CLOSED,OPENED,HALF_OPENED, etc.)