WindowManager

La biblioteca de WindowManager de Jetpack permite que los desarrolladores de aplicaciones admitan nuevos factores de forma de dispositivos y entornos multiventana. La versión inicial está orientada a dispositivos plegables, pero las próximas versiones se extenderán a más tipos de pantallas y funciones de ventanas.
Actualización más reciente Versión estable Versión potencial Versión beta Versión alfa
16 de octubre de 2024 1.3.0 - - 1.4.0-alpha05

Cómo declarar dependencias

Para agregar una dependencia en WindowManager, debes agregar el repositorio Maven de Google a tu proyecto. Consulta el repositorio de Maven de Google para obtener más información.

Agrega las dependencias de los artefactos que necesites en el archivo build.gradle de tu app o módulo:

Groovy

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

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

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

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

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

Kotlin

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

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

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

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

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

Comentarios

Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.

Crear un error nuevo

Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.

Versión 1.4

Versión 1.4.0-alpha05

16 de octubre de 2024

Lanzamiento de androidx.window:window-*:1.4.0-alpha05. La versión 1.4.0-alpha05 contiene estas confirmaciones.

Nuevas funciones

  • Agrega funciones convenientes para obtener widthDp y heightDp de WindowMetrics.

Cambios en la API

  • Agrega widthDp y heightDp a WindowMetrics. (Ide026)
  • Se quitó la API experimental de WindowInsets. (I68a71).
  • Se actualizaron los nombres de los métodos de verificación de límites a isAtLeast (Ib0ab7).

Versión 1.4.0-alpha04

2 de octubre de 2024

Lanzamiento de androidx.window:window-*:1.4.0-alpha04. La versión 1.4.0-alpha04 contiene estas confirmaciones.

Cambios en la API

  • Se agregó un método para calcular el WindowSizeClass a partir de WindowMetrics. (874dba)
  • Cambia los métodos WindowSizeClass a containsWidthDp, containsHeightDp y containsWindowSizeDp para brindar mayor claridad. (fa760d).
  • Convierte WindowAreaController en una clase base abstracta. (I90893).

Correcciones de errores

  • Se agregó compatibilidad con límites relativos cuando se crea un FoldingFeature de prueba. (2e6b3e).
  • Se realizaron correcciones de errores generales cuando se seleccionaba un WindowSizeClass.

Versión 1.4.0-alpha03

18 de septiembre de 2024

Lanzamiento de androidx.window:window-*:1.4.0-alpha03. La versión 1.4.0-alpha03 contiene estas confirmaciones.

Nuevas funciones

  • Se agregó un método de utilidad para obtener un WindowSizeClass de WindowMetrics. (I83f1f)
  • Se cambió el nombre de isAtLeast por containsBreakpoint. (I85b47).
  • Agrega sobrecarga a computeWindowSizeClass con números de punto flotante. (I3dcb2, b/364677934, b/364677802, b/364680886).

Correcciones de errores

  • Agrega los puntos de interrupción faltantes al conjunto de puntos de interrupción predeterminados de WindowSizeClass.
  • Se corrigió un error por el que las dimensiones compactas no se seleccionaban correctamente en algunos casos.

Versión 1.4.0-alpha02

4 de septiembre de 2024

Lanzamiento de androidx.window:window-*:1.4.0-alpha02. La versión 1.4.0-alpha02 contiene estas confirmaciones.

Nuevas funciones

Se agregó compatibilidad para WindowSizeClass personalizado.

  • Abre el constructor de WindowSizeClass para que los desarrolladores puedan usar el suyo.
  • Se agregaron métodos de utilidad isAtLeast para que los desarrolladores puedan procesar un rango de valores WindowSizeClass.
  • Agrega una función de extensión en Set<WindowSizeClass> para calcular la mejor coincidencia del conjunto.
  • Agrega constantes para los puntos de interrupción recomendados de Android.
  • Agrega el conjunto de puntos de interrupción que corresponde a los puntos de interrupción recomendados de Android.

Cambios en la API

  • Se actualizaron los nombres de los métodos de límites para WindowSizeClass. (If89a6).
  • Se actualizó la API de WindowSizeClass para admitir la adición de nuevos valores de puntos de interrupción en el futuro. En lugar de tener límites absolutos, usamos los límites inferiores y recomendamos que los desarrolladores usen verificaciones de límites inferiores cuando procesen un WindowSizeClass. Los WindowWidthSizeClass y WindowHeightSizeClass existentes dejarán de estar disponibles, ya que no se desarrollarán más. (I014ce).

Versión 1.4.0-alpha01

7 de agosto de 2024

Lanzamiento de androidx.window:window-*:1.4.0-alpha01. La versión 1.4.0-alpha01 contiene estas confirmaciones.

Nuevas funciones

  • La fijación de ActivityStack permite que las apps fijen el contenido en un contenedor y que su navegación esté aislada del otro contenedor.
  • El divisor interactivo permite que las apps muestren un divisor fijo o arrastrable entre las dos actividades en una presentación dividida.
  • La atenuación del diálogo de pantalla completa permite que las apps especifiquen el área de atenuación del diálogo para atenuar toda la ventana de tareas o solo el contenedor que muestra el diálogo.
  • La devolución de llamada de información de la ventana de actividad incorporada permite que las apps reciban actualizaciones continuas de la ventana de actividad incorporada.
  • La incorporación del fondo de animación permite que las apps especifiquen el fondo de animación, lo que mejora la calidad de la animación de transición cuando se usa ActivityEmbedding.
  • La Administración mejorada de ActivityStack permite que las apps tengan más control sobre ActivityStacks cuando se usa ActivityEmbedding, lo que incluye lo siguiente:
  • Cómo iniciar una actividad en un ActivityStack especificado
  • Finaliza un ActivityStack

Cambios en la API

  • Una nueva API WindowInfoTracker#supportedPostures:

    • Una API para determinar si el dispositivo admite el modo de mesa para dispositivos plegables. Se agregó WindowAreaSessionPresenter#getWindow.
  • Se agregaron APIs para admitir la fijación de ActivityStack:

    • Clase SplitPinRule
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • Agrega APIs para habilitar y configurar el divisor interactivo

    • Clase DividerAttributes
    • SplitAttributes.Builder#setDividerAttributes
  • Se agregaron APIs para configurar EmbeddingConfiguration y DimAreaBehavior para los diálogos.

    • Clase EmbeddingConfiguration
    • Clase DimAreaBehavior
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • Se agregaron APIs para recibir actualizaciones de información de la ventana de actividad incorporada

    • Clase EmbeddedActivityWindowInfo
    • ActivityEmbeddingController#embeddedActivityWindowInfo
  • Se agregaron APIs para establecer el fondo de la animación de incorporación

    • EmbeddingAnimationBackground
    • SplitAttributes.Builder#setAnimationBackground
  • Se agregaron APIs para finalizar ActivityStacks

    • ActivityEmbeddingController#finishActivityStacks
  • Se agregaron APIs para configurar el lanzamiento de ActivityStack.

    • ActivityEmbeddingOptions#setLaunchingActivityStack
  • Las siguientes APIs son estables y ya no son experimentales:

    • ActivityEmbeddingController#invalidateVisibleActivityStacks (se movió de SplitController#invalidateTopVisibleSplitAttributes)
    • ActivityEmbeddingController#getActivityStack
    • SplitController#updateSplitAttributes
  • Se agregaron APIs para la versión 1.4. (I56774).

Correcciones de errores

  • Se corrigió un error en ciertos dispositivos en el que se mostraba UNAVAILABLE en lugar de ACTIVE cuando una sesión estaba activa.
  • Se quita la compatibilidad con transferActivityToWindowArea en dispositivos con un vendorApiLevel de 2 debido a la compatibilidad inestable con la API.
  • Se introdujo la API para habilitar la función de arrastrar para activar el modo de pantalla completa para el divisor desplazable de incorporación de actividades. (I645c9).
  • Permite que las apps inhabiliten las animaciones de ActivityEmbedding a través de los parámetros de animación para SplitAttributes. (Idc01a).
  • Se quitó el esquema manual de acceso a las nuevas APIs de la plataforma, ya que esto se realiza automáticamente a través del modelado de API cuando se usa R8 con AGP 7.3 o versiones posteriores (p.ej., R8 versión 3.3) y para todas las compilaciones cuando se usa AGP 8.1 o versiones posteriores (p.ej., D8 versión 8.1). Se recomienda a los clientes que no usen AGP que actualicen a la versión 8.1 de D8 o una posterior. Consulta este artículo para obtener más detalles. (Ia60e0, b/345472586).
  • Permite que las extensiones tomen parámetros de animación para SplitAttributes para que el dispositivo pueda usarlos en las transiciones de animación. (Iede00)
  • Se ocultaron las APIs de superposición (Ic4251).
  • Se introdujeron APIs para configurar el divisor fijo o arrastrable para la división (Ia7a78).
  • Se agregó densidad a WindowMetrics (Id6723).
  • Se agregó la API para obtener SupportedPostures. (If557a).
  • Se quitó setLaunchingActivityStack de la API experimental (I191cf).
  • Se introdujo ActivityEmbeddingController#embeddedActivityWindowInfo (I24312).
  • #getToken dejó de estar disponible, y se agregó #getActivityStackToken (Ie0471).
  • Se agregó el adaptador de devolución de llamada para la API de flujo embeddedActivityWindowInfo (Ida77f).
  • Se agregó un adaptador de devolución de llamada para la API de flujo de overlayInfo (I7264f).
  • Introduce WindowSdkExtensionsRule para anular extensionsVersion y realizar pruebas. (Ifb928)
  • - Migra #setLaunchingActivityStack a Bundle para que sea compatible con los usos de ActivityOptionsCompat.
    • Los usuarios deben pasar activityOptions.toBundle en lugar de ActvityOptions.
    • Se quita #setLaunchingActivityStack(Activity). Los usuarios deben migrar para usar ActivityEmbeddingController#getActivityStac(Activity) y obtener un ActivityStack, y pasar el ActivityStack a #setLaunchingActivityStack. (Ie0ccc).
  • - Se introdujeron ActivityStack.Token y SpltInfo.Token como identificadores para comunicarse entre WM Jetpack y las extensiones.
    • Se dan de baja o se reemplazan las APIs para tomar o mostrar tokens en lugar de IBinder. (I12b24).
  • - Se introdujo ActivityEmbeddingController#invalidateVisibleActivityStacks
    • Se quitó SplitController#invalidateTopVisibleSplitAttributes porque la función se consolidó en #invalidateVisibleActivityStacks (I02ef5).
  • - Se agregó la API para establecer la configuración de incorporación. (I59a4a).
  • - Se agregaron las APIs de androidx.Window ActivityStack para fijar o desfijar elementos principales.
    • Se actualizó la app de demo para permitir fijar o desfijar la parte superior de ActivityStack (I24dd3).
  • Se volvieron a agregar #finishActivityStacks y ActivityEmbeddingOptions (Ic1ab3).
  • Se quitaron las APIs inestables. (Ibc534, b/302380585)

Versión 1.3

Versión 1.3.0

29 de mayo de 2024

Lanzamiento de androidx.window:window-*:1.3.0. La versión 1.3.0 contiene estas confirmaciones.

Cambios importantes desde 1.2.0

  • Compatibilidad multiplataforma de Kotlin con clases de tamaño de ventana

Versión 1.3.0-rc01

14 de mayo de 2024

WindowManager Jetpack 1.3 incluye compatibilidad con Kotlin multiplataforma para funciones de WindowSizeClass, así como varias correcciones de errores.

Lanzamiento de androidx.window:window-*:1.3.0-rc01. La versión 1.3.0-rc01 contiene estas confirmaciones.

Versión 1.3.0-beta02

1 de mayo de 2024

Lanzamiento de androidx.window:window-*:1.3.0-beta02. La versión 1.3.0-beta02 contiene estas confirmaciones.

Cambios en la API

  • Se quitó la compatibilidad para crear y usar WindowSizeClass personalizados. (Id1143).

Correcciones de errores

  • Se corrigió el error KotlinReflectionInternalError que se generaba cuando Proguard quitaba algunos archivos en ciertas implementaciones de dispositivos. (I01b02).

Versión 1.3.0-beta01

3 de abril de 2024

Lanzamiento de androidx.window:window-*:1.3.0-beta01. La versión 1.3.0-beta01 contiene estas confirmaciones.

Versión 1.3.0-alpha03

6 de marzo de 2024

Lanzamiento de androidx.window:window-*:1.3.0-alpha03. La versión 1.3.0-alpha03 contiene estas confirmaciones.

Cambios en la API

  • Se dividió WindowSizeClassUtil en métodos más enfocados. (Ie9292).
  • Restablece WindowSizeClass#compute (I21355, b/324293374).

Correcciones de errores

  • Se corrigió la falla en la que el contexto proporcionado no se desenrollaba correctamente. (94d10ce , b/318787482).

Versión 1.3.0-alpha02

7 de febrero de 2024

Lanzamiento de androidx.window:window-*:1.3.0-alpha02. La versión 1.3.0-alpha02 contiene estas confirmaciones.

Nuevas funciones

  • Se realizaron actualizaciones en la plataforma de la API de Window Size Class para mejorar la flexibilidad de los desarrolladores que desean usar sus propias clases de tamaño.

Cambios en la API

  • Agrega restricciones de altura al selector de ancho. (I23393).
  • Agrega funciones de utilidad para elegir un WindowSizeClass de un conjunto. Se agregaron funciones de puntuación experimentales para que los desarrolladores puedan escribir sus propios selectores. Agrega una función de extensión del selector para elegir el WindowSizeClass más amplio dentro de un límite determinado. (I0c944).
  • Abre el constructor WindowSizeClass para que se puedan agregar puntos de interrupción personalizados. (Ic1ff3).
  • Se agregó una función de conveniencia para crear una clase de tamaño a partir del ancho, la altura y la densidad. (If67f4).

Correcciones de errores

  • Se corrigió la excepción cuando el valor de número de punto flotante se truncaba a 0. (272ffac).

Versión 1.3.0-alpha01

15 de noviembre de 2023

Lanzamiento de androidx.window:window-*:1.3.0-alpha01. La versión 1.3.0-alpha01 contiene estas confirmaciones.

Nuevas funciones

  • Se exponen APIs de ventana experimentales para acceder a la pantalla posterior.
  • Las APIs de prueba para crear un FoldingFeature ahora son estables.
  • Las APIs de prueba para configurar valores ActivityEmbedding falsos ahora son estables.
  • WindowLayoutInfoPublisherRule ahora informa la anulación cuando se obtiene un valor de un UiContext.
  • WindowInfoTracker informa los datos de la función de plegado a los parámetros UiContext.
  • Expone la versión de Extensions en el dispositivo.
  • Constantes WindowProperties para anulaciones por app del usuario:
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE: Informa al sistema que la app inhabilitó la anulación de compatibilidad de relación de aspecto para el usuario.
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE: Informa al sistema que la app inhabilitó la opción de pantalla completa de la configuración de anulación de compatibilidad de relación de aspecto del usuario.

Versión 1.2

Versión 1.2.0

15 de noviembre de 2023

Lanzamiento de androidx.window:window-*:1.2.0. La versión 1.2.0 contiene estas confirmaciones.

Cambios importantes desde la versión 1.1.0

  • Se exponen APIs de ventana experimentales para acceder a la pantalla posterior.
  • Las APIs de prueba para crear un FoldingFeature ahora son estables.
  • Las APIs de prueba para configurar valores ActivityEmbedding falsos ahora son estables.
  • WindowLayoutInfoPublisherRule ahora informa la anulación cuando se obtiene un valor de un UiContext.
  • WindowInfoTracker informa los datos de la función de plegado a los parámetros UiContext.
  • Expone la versión de Extensions en el dispositivo.

Versión 1.2.0-rc01

1 de noviembre de 2023

Lanzamiento de androidx.window:window-*:1.2.0-rc01. La versión 1.2.0-rc01 contiene estas confirmaciones.

Nuevas funciones

  • Se exponen APIs de ventana experimentales para acceder a la pantalla posterior.
  • Las APIs de prueba para crear un FoldingFeature ahora son estables.
  • Las APIs de prueba para configurar valores ActivityEmbedding falsos ahora son estables.
  • WindowLayoutInfoPublisherRule ahora informa la anulación cuando se obtiene un valor de un UiContext.
  • WindowInfoTracker informa los datos de la función de plegado a los parámetros UiContext.
  • Expone la versión de Extensions en el dispositivo.

Versión 1.2.0-beta04

18 de octubre de 2023

Lanzamiento de androidx.window:window-*:1.2.0-beta04. La versión 1.2.0-beta04 contiene estas confirmaciones.

Cambios en la API

Versión 1.2.0-beta03

20 de septiembre de 2023

Lanzamiento de androidx.window:window-*:1.2.0-beta03. La versión 1.2.0-beta03 contiene estas confirmaciones.

Nuevas funciones

  • Se agregaron verificaciones de RequiresApi para las APIs que necesitan una versión específica de extensiones para funcionar correctamente.
  • Agrega una API para exponer la versión de las extensiones en el dispositivo.

Cambios en la API

  • Se anota la versión requerida de la extensión del SDK de ventana en las APIs públicas.
    • Quita isXXXSupported en el componente de incorporación de actividades. (Ie3dae).
  • Se introdujo WindowSdkExtensions para informar la versión de la extensión en el dispositivo.
    • Introduce RequiresWindowSdkExtension para anotar la versión mínima requerida de la extensión. (I05fd4).
  • Hace que WindowAreaInfo#getCapability no sea anulable. (I17048)

Versión 1.2.0-beta01

26 de julio de 2023

Lanzamiento de androidx.window:window-*:1.2.0-beta01. La versión 1.2.0-beta01 contiene estas confirmaciones.

Nuevas funciones

  • Se exponen APIs de ventana experimentales para acceder a la pantalla posterior.
  • Las APIs de prueba para crear un FoldingFeature ahora son estables.
  • Las APIs de prueba para configurar valores ActivityEmbedding falsos ahora son estables.
  • WindowLayoutInfoPublisherRule ahora informa la anulación cuando se obtiene un valor de un UiContext.
  • WindowInfoTracker informa los datos de la función de plegado a los parámetros UiContext.

Cambios en la API

  • Se marcaron las APIs de WindowArea como experimentales para permitir que los cambios de API continúen para una versión estable en 1.3 (I857f5).
  • Se actualizaron los archivos de API para anotar la supresión de compatibilidad (I8e87a, b/287516207).

Versión 1.2.0-alpha03

21 de junio de 2023

Lanzamiento de androidx.window:window-*:1.2.0-alpha03. La versión 1.2.0-alpha03 contiene estas confirmaciones.

Nuevas funciones

  • Se quitaron las APIs obsoletas de la plataforma de la API.
  • Se agregaron APIs para admitir pantallas simultáneas.
  • Agrega una propiedad para inhabilitar la anulación de cambio de tamaño forzado.
  • Se agregó una propiedad para inhabilitar la anulación de la relación de aspecto mínima.
  • Se estabilizó ActivityEmbeddingRule para admitir pruebas de unidades en torno a la incorporación de actividades.

Cambios en la API

  • Se quitaron las APIs obsoletas (I18d39).
  • Se agregó compatibilidad con pantallas simultáneas. (Ifcbb0).

Correcciones de errores

  • Se agregó una propiedad de compatibilidad de inhabilitación para la anulación de cambio de tamaño forzado (Ie7ab1).
  • Se quita SESSION_STATE_CONTENT_INVISIBLE de la interfaz de extensiones. (I6ed19).
  • Se estabilizó ActivityEmbeddingRule para admitir pruebas de unidades en torno a la incorporación de actividades. (I8d6b6).
  • Se agregó una propiedad de compatibilidad con inhabilitación para la anulación de relación de aspecto mínima. (I66390).
  • Se quitaron las APIs de WindowArea obsoletas (Ieb67c).
  • Cambia el nombre de la propiedad del bucle de solicitud de orientación a PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED. (Ie2fbd).
  • Se actualizaron los nombres de constantes de la sesión del área de la ventana (I83675).
  • Se agregó una propiedad de compatibilidad con anulación que ignora el bucle de solicitud de orientación cuando se detecta (I0a7a2).
  • Agrega WindowAreaComponent#STATUS_ACTIVE para indicar que la función ya está activa. (I62bc3).
  • Se agregaron las APIs de RearDisplayPresentationMode (I0401c).
  • Se quitó la API de color de fondo para la versión estable. (I34c3e).
  • Se ocultaron las APIs de Window Area. (I39de0).
  • Se agregaron métodos para anular SplitInfo en SplitController. Se agregaron métodos de prueba para crear un doble para SplitInfo y ActivityStack. (Icd69f).
  • Se hizo opcional la etiqueta para ActivityRule.Builder. (Ib0b44).
  • Se quitaron RatioSplitType, ExpandContainersSplit y HingeSplitType. Ahora son SplitType.
    • Se reemplazaron #splitEqually(), #expandContainers() y #splitByHinge por SplitType SPLIT_TYPE_EQUAL, SPLIT_TYPE_EXPAND y SPLIT_TYPE_HINGE constantes.
    • Se quitó la funcionalidad para establecer el tipo de resguardo del tipo de división de bisagra. Si no se puede aplicar el tipo de división de bisagra debido al estado actual del dispositivo o la ventana, se recurre a dividir el contenedor de tareas superior por igual. Usa SplitController#setSplitAttributesCalculator para personalizar el tipo de división de resguardo. (Ifcc59).
  • Baja de add/removeSplitCallback
    • Se movió add/removeSplitCallback a SplitControllerCallbackAdapter
    • Se agregó compatibilidad con Flow para obtener la lista SplitInfo (I7f1b6).
  • Se agregó una regla de prueba para ActivityEmbeddingController (I42e9b).
  • Se cambió el nombre de ActivityOptionsCompat a ActivityEmbeddingOptions (I89301).
  • Se agregó splitSupportStatus para indicar si está disponible la incorporación de Activity (I10024).
  • Introduce SplitAttributes.BackgroundColor para representar mejor el valor DEFAULT. Se debe aclarar que no se admite el color de fondo de animación no opaco, por lo que cualquier color no opaco se tratará como el predeterminado, lo que significa que se usará el color de fondo de la ventana del tema actual. (Ic6b95).
  • Se reemplazaron alwaysAllow() y alwaysDisallow() por ALWAYS_ALLOW y ALWAYS_DISALLOW. (I3057b).
  • Se agregaron APIs para SplitRule, SplitAttributes y SplitAttributesCalculator (I92d23).
  • Agrega TestActivityStack para crear ActivityStack para pruebas
    • Se agregó TestSplitInfo para crear SplitInfo para pruebas. (I8e779)
  • Se agregó una forma de crear SplitAttributesCalculatorParams falsos para que los desarrolladores puedan verificar su SplitAttributesCalculator personalizado (Id4a6e).
  • Se agregaron WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context) y WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context) (I66c7f).

Versión 1.2.0-alpha02

7 de junio de 2023

Lanzamiento de androidx.window:window-*:1.2.0-alpha02. La versión 1.2.0-alpha02 contiene estas confirmaciones.

Nuevas funciones

  • Se actualizó la API de prueba para tener una constante para funciones de plegado no especificadas.
  • Si se anula con WindowLayoutInfoPublishRule, se anularán todos los valores de windowLayoutInfo, incluida la API basada en el contexto.

Cambios en la API

  • Se agregó una constante para la función de plegado central no especificada. (I7530c).

Correcciones de errores

  • Se actualizó WindowLayoutInfoPublishRule para admitir anulaciones en WindowLayoutInfo basadas en Context. (I2037a).

Versión 1.2.0-alpha01

24 de mayo de 2023

Lanzamiento de androidx.window:window-*:1.2.0-alpha01. La versión 1.2.0-alpha01 contiene estas confirmaciones.

Nuevas funciones

Se estabilizó la prueba de APIs en torno a Activity Embedding y WindowLayoutInfoTracker. ActivityEmbeddingRule se cambió a estable. WindowMetricsCalculatorRule se cambió a estable. Las funciones de utilidad para crear un FoldingFeature de prueba se actualizaron a la versión estable.

Cambios en la API

  • Se estabilizó ActivityEmbeddingRule para admitir pruebas de unidades en torno a la incorporación de actividades. (I8d6b6).
  • WindowMetrisCalculatorTestRule es estable y permite métricas de stub para pruebas de JVM. Te recomendamos que uses un emulador para obtener resultados precisos.
  • Estabiliza las APIs de prueba para WindowLayoutInfo para admitir pruebas de JVM. (Ie036e).
  • Se agregó IntRange para probar los valores de la función de plegado. (I69f7d)

Versión 1.1

Versión 1.1.0

7 de junio de 2023

Lanzamiento de androidx.window:window-*:1.1.0. La versión 1.1.0 contiene estas confirmaciones.

Cambios importantes desde 1.0.0

Incorporación de actividades

  • Se agregó PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED como una propiedad booleana de la etiqueta <application> en el manifiesto de la app.
  • Se dio de baja isSplitSupported y se reemplazó por splitSupportStatus para proporcionar información más detallada sobre por qué no está disponible la función de división.
  • Se agregó la clase anidada SplitController.SplitSupportStatus para proporcionar constantes de estado para la propiedad splitSupportStatus.
  • Se refactorizó SplitController en varios módulos:
    • Módulo ActivityEmbeddingController para APIs relacionadas con Activity o ActivityStack.
    • Se movió isActivityEmbedded de SplitController a ActivityEmbeddingController.
    • Módulo RuleController para operaciones relacionadas con EmbeddingRule:
    • Se quitaron las siguientes APIs de SplitController:
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • Se agregaron las siguientes APIs de RuleController:
    • addRule(): Agrega una regla o actualiza la regla que tiene la misma etiqueta.
    • removeRule(): Quita una regla de la colección de reglas registradas.
    • setRules(): Establece una colección de reglas.
    • clearRules(): Quita todas las reglas registradas.
    • parseRules(): Analiza las reglas de las definiciones de reglas XML.
  • Todos los módulos requieren que el método #getInstance() inicialice un contexto, incluidos los siguientes:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Se agregó la clase EmbeddingAspectRatio para definir constantes de comportamiento similares a enum relacionadas con la relación de aspecto de la pantalla.
  • Se agregó la clase SplitAttributes para definir el diseño dividido.
  • Se agregaron funciones de calculadora SplitAttributes a SplitController para personalizar diseños divididos:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() para comprobar si las APIs de SplitAttributesCalculator son compatibles con el dispositivo
  • Se agregó el campo EmbeddingRule#tag.
  • Actualizaciones de la API en SplitRule:
    • Se agregó defaultSplitAttributes: Define el diseño de división predeterminado de una división y reemplaza a splitRatio y layoutDirection.
    • Se agregó la traducción de las propiedades XML splitRatio y splitLayoutDirection a defaultSplitAttributes.
    • Se cambiaron las definiciones de dimensiones mínimas para usar píxeles independientes de la densidad (dp) en lugar de píxeles.
    • Se agregó minHeightDp con el valor predeterminado 600 dp.
    • Se cambió minWidth a minWidthDp con el valor predeterminado 600 dp.
    • Se cambió minSmallestWidth a minSmallestWidthDp con el valor predeterminado 600 dp.
    • Se agregó maxAspectRatioInHorizontal con el valor predeterminado ALWAYS_ALLOW.
    • Se agregó maxAspectRatioInPortrait con el valor predeterminado 1.4.
    • Se definió la clase anidada FinishBehavior para reemplazar las constantes de comportamiento de finalización.
    • Se aplicaron los cambios de propiedad a la clase anidada de Builder de SplitPairRule y SplitPlaceholderRule.
  • Se reemplazó SplitInfo#getSplitRatio() por SplitInfo#getSplitAttributes() para proporcionar información adicional relacionada con la división.

WindowLayout

  • Se agregó compatibilidad experimental con el contexto de IU que no es de actividad a WindowInfoTracker.
  • Se agregó un contexto experimental de IU que no es de actividad a WindowMetricsCalculator.

Pasos de la migración

  • Para habilitar la incorporación de actividades para mostrar actividades en divisiones, las apps deben agregar la propiedad PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED a la etiqueta <application> del manifiesto: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> Esto permite que el sistema optimice los comportamientos de división de una aplicación con anticipación.
  • Relación SplitInfo
    • Verifica si la división actual está apilada: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Verifica la proporción actual: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • Migraciones de SplitController:
    • SplitController.getInstance() cambia a SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) cambia a RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) cambia a ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) cambia a RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) cambia a RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() cambia a RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() cambia a RuleController.getInstance(Context).getRules().
  • Migraciones de propiedades SplitRule:
    • minWidth y minSmallestWidth ahora usan unidades de dp en lugar de píxeles. Las apps pueden usar la siguiente llamada: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) o simplemente dividir minWith en píxeles por displayMetrics#density.
  • Las constantes de comportamiento de finalización deben migrarse a constantes de clase similares a enum FinishBehavior:
    • FINISH_NEVER cambia a FinishBehavior.NEVER.
    • FINISH_ALWAYS cambia a FinishBehavior.ALWAYS.
    • FINISH_ADJACENT cambia a FinishBehavior.ADJACENT.
  • La dirección del diseño se debe migrar a SplitAttributes.LayoutDirection:
    • ltr cambia a SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl cambia a SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale cambia a SplitAttributes.LayoutDirection.LOCALE.
    • splitRatio se debe migrar a SplitAttributes.SplitType.ratio(splitRatio).
  • Migraciones de SplitPairRule.Builder:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) cambia a kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) y setSplitRatio(ratio) cambian a kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() ).
    • setFinishPrimaryWithSecondary y setFinishSecondaryWithPrimary toman las constantes similares a enum FinishBehavior. Consulta "Migraciones de SplitRule" para obtener más información.
    • Usa setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) para mostrar divisiones en dispositivos verticales.
  • Migraciones de SplitPlaceholder.Builder:
    • Solo tiene los parámetros filters y placeholderIntent. Otras propiedades se mueven a los set. Consulta "Migraciones de SplitPairRule.Builder" para obtener más información.
    • setFinishPrimaryWithPlaceholder toma las constantes similares a enum FinishBehavior. Consulta "Migraciones de SplitRule" para obtener más información.
    • setLayoutDirection(layoutDirection) y setSplitRatio(ratio) cambian a: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Usa setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) para mostrar divisiones en dispositivos verticales.

Versión 1.1.0-rc01

10 de mayo de 2023

Lanzamiento de androidx.window:window-*:1.1.0-rc01. La versión 1.1.0-rc01 contiene estas confirmaciones.

Nuevas funciones

  • Se lanzó ActivityEmbedding como una API estable.
  • Se corrigieron varios errores.

Versión 1.1.0-beta02

5 de abril de 2023

Lanzamiento de androidx.window:window-*:1.1.0-beta02. La versión 1.1.0-beta02 contiene estas confirmaciones.

Nuevas funciones

  • Correcciones internas y limpieza.

Versión 1.1.0-beta01

22 de marzo de 2023

Lanzamiento de androidx.window:window-*:1.1.0-beta01. La versión 1.1.0-beta01 contiene estas confirmaciones.

Incorporación de actividades

  • Se agregó PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED como una propiedad booleana de la etiqueta <application> en el manifiesto de la app.
  • Se dio de baja isSplitSupported y se reemplazó por splitSupportStatus para proporcionar información más detallada sobre por qué no está disponible la función de división.
  • Se agregó la clase anidada SplitController.SplitSupportStatus para proporcionar constantes de estado para la propiedad splitSupportStatus.
  • Se refactorizó SplitController en varios módulos:
    • Módulo ActivityEmbeddingController para APIs relacionadas con Activity o ActivityStack.
    • Se movió isActivityEmbedded de SplitController a ActivityEmbeddingController.
    • Módulo RuleController para operaciones relacionadas con EmbeddingRule:
    • APIs de SplitController que se quitaron:
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • Se agregaron las siguientes APIs de RuleController:
      • addRule(): Agrega una regla o actualiza la regla que tiene la misma etiqueta.
      • removeRule(): Quita una regla de la colección de reglas registradas.
      • setRules(): Establece una colección de reglas.
      • clearRules(): Quita todas las reglas registradas.
      • "parseRules()": Analiza las reglas de las definiciones de reglas XML.
  • Todos los módulos requieren que el método #getInstance() inicialice un contexto, incluidos los siguientes:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Se agregó la clase EmbeddingAspectRatio para definir constantes de comportamiento similares a enum relacionadas con la relación de aspecto de la pantalla.
  • Se agregó la clase SplitAttributes para definir el diseño dividido.
  • Se agregaron funciones de calculadora SplitAttributes a SplitController para personalizar diseños divididos:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() para comprobar si las APIs de SplitAttributesCalculator son compatibles con el dispositivo
  • Se agregó el campo EmbeddingRule#tag.
  • Actualizaciones de la API en SplitRule:
    • Se agregó defaultSplitAttributes: Define el diseño de división predeterminado de una división y reemplaza a splitRatio y layoutDirection.
    • Se agregó la traducción de las propiedades XML splitRatio y splitLayoutDirection a defaultSplitAttributes.
    • Se cambiaron las definiciones de dimensiones mínimas para usar píxeles independientes de la densidad (dp) en lugar de píxeles.
    • Se agregó minHeightDp con el valor predeterminado 600 dp.
    • Se cambió minWidth a minWidthDp con el valor predeterminado 600 dp.
    • Se cambió minSmallestWidth a minSmallestWidthDp con el valor predeterminado 600 dp.
    • Se agregó maxAspectRatioInHorizontal con el valor predeterminado ALWAYS_ALLOW.
    • Se agregó maxAspectRatioInPortrait con el valor predeterminado 1.4.
    • Se definió la clase anidada FinishBehavior para reemplazar las constantes de comportamiento de finalización.
    • Se aplicaron los cambios de propiedad a la clase anidada Builder de SplitPairRule y SplitPlaceholderRule.
  • Se reemplazó SplitInfo#getSplitRatio() por SplitInfo#getSplitAttributes() para proporcionar información adicional relacionada con la división.

WindowLayout

  • Se agregó compatibilidad con el contexto de IU que no es de actividad a WindowInfoTracker.
  • Se agregó el contexto de la IU que no es de actividad a WindowMetricsCalculator.

Pasos de la migración

  • Para habilitar la incorporación de actividades para mostrar actividades en divisiones, las apps deben agregar la propiedad PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED a la etiqueta <application> del manifiesto: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> Esto permite que el sistema optimice los comportamientos de división de una aplicación con anticipación.
  • Relación SplitInfo
    • Verifica si la división actual está apilada: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Verifica la proporción actual: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • Migraciones de SplitController:
    • SplitController.getInstance() cambia a SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) cambia a RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) cambia a ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) cambia a RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) cambia a RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() cambia a RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() cambia a RuleController.getInstance(Context).getRules().
  • Migraciones de propiedades SplitRule:
    • minWidth y minSmallestWidth ahora usan unidades de dp en lugar de píxeles. Las apps pueden usar la siguiente llamada: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) o simplemente dividir minWith en píxeles por displayMetrics#density.
  • Las constantes de comportamiento de finalización deben migrarse a constantes de clase similares a enum FinishBehavior:
    • FINISH_NEVER cambia a FinishBehavior.NEVER.
    • FINISH_ALWAYS cambia a FinishBehavior.ALWAYS.
    • FINISH_ADJACENT cambia a FinishBehavior.ADJACENT.
  • La dirección del diseño se debe migrar a SplitAttributes.LayoutDirection:
    • ltr cambia a SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl cambia a SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale cambia a SplitAttributes.LayoutDirection.LOCALE.
    • splitRatio se debe migrar a SplitAttributes.SplitType.ratio(splitRatio).
  • Migraciones de SplitPairRule.Builder:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) cambió a kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) y setSplitRatio(ratio) cambian a kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() ).
    • setFinishPrimaryWithSecondary y setFinishSecondaryWithPrimary toman las constantes similares a enum FinishBehavior. Consulta "Migraciones de SplitRule" para obtener más información.
    • Usa setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) para mostrar divisiones en dispositivos verticales.
  • Migraciones de SplitPlaceholder.Builder:
    • Solo tiene los parámetros filters y placeholderIntent. Otras propiedades se mueven a los set. Consulta "Migraciones de SplitPairRule.Builder" para obtener más información.
    • setFinishPrimaryWithPlaceholder toma las constantes similares a enum FinishBehavior. Consulta "Migraciones de SplitRule" para obtener más información.
    • setLayoutDirection(layoutDirection) y setSplitRatio(ratio) cambian a: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Usa setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) para mostrar divisiones en dispositivos verticales.

Versión 1.1.0-alpha06

22 de febrero de 2023

Se lanzó androidx.window:window-*:1.1.0-alpha06. La versión 1.1.0-alpha06 contiene estas confirmaciones.

Nuevas funciones

  • Se expuso la versión experimental de obtener WindowLayoutInfo desde un contexto de IU.

Cambios en la API

  • Se agregó splitSupportStatus para indicar si está disponible la incorporación de Activity (I10024).
  • Se hizo experimental la API de WindowLayoutInfo del contexto de la IU. (I58ee0).
  • Se introdujo el WindowAreaController y las APIs para habilitar el modo RearDisplay para mover la ventana actual a la pantalla alineada con la cámara posterior (Iffcbf).
  • Se actualizó el color de fondo predeterminado (I1ac1b).
  • Se agregaron parámetros SplitAttributes (I18bdd).
  • Se agregaron APIs para SplitRule, SplitAttributes y SplitAttributesCalculator (I92d23).
  • Se mejoraron las APIs en torno a maxAspectRatio:
    1. Se reemplazaron alwaysAllow() y alwaysDisallow() por ALWAYS_ALLOW y ALWAYS_DISALLOW.
    2. Se actualizó la documentación de la API de @see con documentación independiente (I3057b).
  • Se quitaron los siguientes constructores de las APIs públicas porque no se supone que las apps los llamen.
    • Constructor SplitInfo.
    • Constructor ActivityStack (Ide534).
  • SplitRule ahora toma maxAspectRatioInPortrait/Landscape. Solo permite actividades divididas cuando la relación de aspecto de los límites superiores es menor o igual que el objeto maxAspectRatio solicitado (Ia5990).
  • Se cambió RuleController#parseRules para que sea estático (I785df).
  • Mejora las APIs en torno a ActivityEmbedding.
    1. Se alinearon los nombres de las APIs. Se usó la función de agregar o quitar para varias instancias:
    2. registerRule cambió a addRule
    3. unregisterRule cambió a removeRule
    4. Se reemplazó getSplitRules por getRules, ya que ActivityRule no es una regla de división.
    5. Se agregó RuleController#setRules para configurar varias reglas.
    6. Se movieron las APIs relacionadas con las reglas de SplitController a singleton RuleController. Son:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. Se movió #isActivityEmbedded de SplitController a singleton ActivityEmbeddingController. Es
    14. isActivityEmbedded
    15. Se quitó SplitController#initialize. Para configurar reglas del archivo en formato XML, usa RuleController#parseRules y #setRules. Antes del cambio: SplitController.initialize(context, R.xml.static_rules) Después del cambio: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. Ya no distinguimos entre las reglas estáticas y las reglas de tiempo de ejecución. Dicho esto, llama a los resultados de #clearRules para borrar todas las reglas sin importar que estén registradas con definiciones de reglas XML estáticas o durante el tiempo de ejecución Para tener el comportamiento heredado de SplitController#clearRegisteredRules, llama a RuleController#parseRules con el ID de recursos XML y llama a RuleController#setRules para volver a configurar las reglas. Antes de este cambio: SplitController.getInstance(context).clearRegisteredRules() Después de este cambio: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) (Ib3967).
  • Se mejoraron las APIs de SplitRule:
    1. Se tomaron las dimensiones mínimas en DP en lugar de píxeles para SplitRule.
    2. Se refactorizó para que el compilador de SplitRule tome las dimensiones mínimas como opcionales (I95f17).
  • Se pasó un contexto para inicializar SplitController (I42549).
  • Se cambió el nombre de SplitRule#layoutDir por #layoutDirection y el de SplitRule Builder#setLayoutDir por Builder#setLayoutDirection (I3f6d1).

Versión 1.1.0-alpha04

9 de noviembre de 2022

Se lanzó androidx.window:window-*:1.1.0-alpha04. La versión 1.1.0-alpha04 contiene estas confirmaciones.

Nuevas funciones

  • Se expuso un método a fin de determinar si un ActivityStack está vacío para ActivityEmbedding.
  • Se quitaron las etiquetas de API experimental de las APIs de ActivityEmbedding.
  • Se ocultó el constructor ActivityRule, ya que Builder es la forma preferida de construir.
  • Se agregó un método experimental para obtener los WindowInsets en WindowMetrics.
  • Se actualizó SplitPlaceholderFinishBehavior para evitar finalizar el marcador de posición. Terminar el marcador de posición causaba un comportamiento confuso.

Cambios en la API

  • Se hizo que el valor isEmpty sea público para reemplazar la función isEmpty.
  • Se cambió el nombre de las actividades del parámetro ActivityStack a activitiesInProcess (Ia5055).
  • Se quitaron ActivityFilter#matchesClassName y ActivityFilter#matchesClassNameOrWildCard porque son confusos.
  • Se agregaron ActivityFilter#componentName y ActivityFilter#intentAction para permitir que el llamador distinga diferentes filtros (I41f22).
  • Se quitaron las APIs de @Deprecated de la API experimental (I216b3).
  • Se quitó @ExperimentalWindowApi de las APIs de incorporación de actividad (I69ebe).
  • Oculta el constructor ActivityRule y usa el compilador en su lugar. (If4eb6).
  • Se agregaron APIs para verificar si una actividad forma parte de ActivityFilter (Ia43cf).
  • Se actualizaron los archivos de la API para reflejar los cambios en las clases WindowMetrics y WindowMetricsCalculatorCompat (I667fe).
  • Se actualizaron el Javadoc de la propiedad ActivityEmbedding y el nombre de la clase (Ia1386).
  • Se agregaron los nombres de las etiquetas de la propiedad ActivityEmbedding para usarlos en AndroidManifest.xml (Id1ad4).
  • Se agregó una API nueva de SplitPlaceholderFinishBehavior y SplitPlaceholderRule.finishPrimaryWithPlaceholder. Esto reemplaza la actual SplitPlaceholderRule.finishPrimaryWithSecondary que define cuándo finalizan las actividades de marcadores de posición y cómo deben comportarse las actividades asociadas en incorporación de actividades (I64647).

Correcciones de errores

  • Se introdujo el WindowAreaController y las APIs para habilitar el modo RearDisplay a fin de mover la ventana actual a la pantalla alineada con la cámara posterior (I388ab).

Versión 1.1.0-alpha03

27 de julio de 2022

Lanzamiento de androidx.window:window-*:1.1.0-alpha03. La versión 1.1.0-alpha03 contiene estas confirmaciones.

Nuevas funciones

  • Actualiza los valores predeterminados para las reglas de incorporación.

Cambios en la API

  • Actualiza los valores predeterminados de las propiedades de las reglas de incorporación (Ic4d35).

Versión 1.1.0-alpha02

11 de mayo de 2022

Lanzamiento de androidx.window:window-*:1.1.0-alpha02. La versión 1.1.0-alpha02 contiene estas confirmaciones.

Nuevas funciones

  • Se lanzaron las bibliotecas de adaptadores para admitir Java y RxJava.

Versión 1.1.0-alpha01

11 de mayo de 2022

Lanzamiento de androidx.window:window-*:1.1.0-alpha01. La versión 1.1.0-alpha01 contiene estas confirmaciones.

Nuevas funciones

  • Se lanzaron adaptadores para admitir Java y RxJava.

Versión 1.1.0-alpha01

20 de abril de 2022

Se lanzó androidx.window:window:1.1.0-alpha01. La versión 1.1.0-alpha01 contiene estas confirmaciones.

Nuevas funciones

  • Se corrigió un error por el que, en segundo plano, una app dejaba de emitir funciones de plegado.
  • Se expandió la API experimental de ActivityEmbedding.

Cambios en la API

  • Una API pública para verificar si se está incorporando una actividad (I39eb7).

Correcciones de errores

  • Se agregaron APIs que personalizan el comportamiento de finalización de los contenedores en las divisiones de la actividad (I1a1e4).
  • Se agregó una nueva opción de configuración para las reglas de división de actividad (Iec6af).

Versión 1.0

Versión 1.0.0

26 de enero de 2022

Lanzamiento de androidx.window:window-*:1.0.0. La versión 1.0.0 contiene estas confirmaciones.

Funciones principales de la versión 1.0.0

  • Compatibilidad con dispositivos plegables en WindowInfoTracker y FoldingFeature. WindowMetricsCalculator para ayudar a calcular el elemento WindowMetrics actual.

Versión 1.0.0-rc01

15 de diciembre de 2021

Lanzamiento de androidx.window:window-*:1.0.0-rc01. La versión 1.0.0-rc01 contiene estas confirmaciones.

Nuevas funciones

  • Agregamos compatibilidad para teléfonos plegables por medio de WindowInfoTracker.
  • Agregamos métodos para calcular las WindowMetrics actuales y máximas.
  • Agregamos API de prueba compatibles.

Versión 1.0.0-beta04

17 de noviembre de 2021

Lanzamiento de androidx.window:window-*:1.0.0-beta04. La versión 1.0.0-beta04 contiene estas confirmaciones.

Nuevas funciones

  • Se cambió el nombre de WindowInfoRepository por WindowInfoTracker.
  • Activity se convirtió en una dependencia explícita de método para WindowInfoTracker.
  • Se agregó un objeto TestRule simple para WindowMetricsCalculator para brindarle compatibilidad a los desarrolladores que usan Robolectric.

Cambios en la API

  • Se quitaron extensiones. (I25a5f)
  • Se agregó isEmpty en ActivityStack. (I5a4e6)
  • Se cambió el nombre de WindowInfoRepository por WindowInfoTracker.
    • Se actualizaron las dependencias de java/rxjava/testing para que coincidan. (I0da63).
  • Se agregó una regla de prueba para un objeto WindowMetricsCalculator simple. (Ibacdb)

Versión 1.0.0-beta03

27 de octubre de 2021

Lanzamiento de androidx.window:window-*:1.0.0-beta03. La versión 1.0.0-beta03 contiene estas confirmaciones.

Nuevas funciones

  • Se agregaron API de Activity Embedding experimentales. Esta versión de diseño inicial permite mostrar dos API de Activities en paralelo.

Cambios en la API

  • Se quitó la API de currentWindowMetrics, ya que no podemos proporcionarla con exactitud. En su lugar, usa WindowMetricsCalculator. (Icda5f)
  • Se actualizó la API de Extensions. (Ica92b)
  • Se agregó una interfaz para una nueva función que permite incorporar actividades y mostrarlas en paralelo en la ventana de tareas superior (I5711d)
  • Se ocultaron los constructores de WindowMetrics y WindowLayoutInfo. En su lugar, usa las APIs de prueba. (I5a1b5)
  • Se agregó una API para crear objetos WindowLayoutInfo falsos. (I4a2fd).

Correcciones de errores

Versión 1.0.0-beta02

1 de septiembre de 2021

Lanzamiento de androidx.window:window-*:1.0.0-beta02. La versión 1.0.0-beta02 contiene estas confirmaciones.

Nuevas funciones

  • Se agregó una anotación para las APIs experimentales (I9f1b6)
  • Se agregó un método de prueba para crear FoldingFeature de prueba que acepte un objeto Rect. De esta manera, se facilitarán las pruebas cuando se use Robolectric, en lugar de un objeto Activity real. (Id1cca)

Versión 1.0.0-beta01

18 de agosto de 2021

Lanzamiento de androidx.window:window-*:1.0.0-beta01. La Versión 1.0.0-beta01 contiene estas confirmaciones.

Nuevas funciones

  • Se quitaron las constantes anteriores, y FoldingFeature se convirtió en una interfaz.

Cambios en la API

  • Se quitaron las constantes anteriores, y FoldFeature se convirtió en una interfaz. (I9a2d5)

Correcciones de errores

  • Las bibliotecas que dependen de la biblioteca Test Core se actualizaron a la versión 1.4.0 y ahora funcionarán con la versión S de la plataforma de Android. (I88b72, b/189353863).

Versión 1.0.0-alpha10

4 de agosto de 2021

Lanzamiento de androidx.window:window-*:1.0.0-alpha10. La versión 1.0.0-alpha10 contiene estas confirmaciones.

Nuevas funciones

  • Se cambió el nombre de WindowInfoRepo por WindowInfoRepository, y se ajustaron las clases y los archivos correspondientes.
  • Se convirtieron las métricas actuales de ventana en un objeto Flow de WindowInfoRepository, ya que el valor cambia con el paso del tiempo.
  • Se cambió el nombre de WindowInfoRepoJavaAdapter por WindowInfoRepoCallbackAdapter.
  • Se agregó un método auxiliar para crear objetos FoldingFeature de prueba
  • Se actualizaron los paquetes de las clases grupales según la función que admiten.

Cambios en la API

  • Se cambió el nombre de ActivityExt por ActivityExtensions. Se cambió Repo por Repository. (I61a16)
  • Se actualizaron los paquetes de las clases. (I23ae2).
  • Se quitó WindowMetrics de WindowInfoRepo. (I24663)
  • Se quitó WindowManager, y se usó WindowInfoRepo.
    • WindowBackend se convirtió en interno. (I06d9a)
  • Se convirtieron las métricas de ventana en Flow.
    • Se cambió el nombre del adaptador de Java por WindowInfoRepoCallbackAdapter
    • Se quitó callbackFlow para que no haya más APIs experimentales en uso (Ia4d15)
  • Se agregó un método auxiliar para crear funciones de visualización de prueba.
    • Se cambió occlusionMode por occlusionType. (If4cff)

Correcciones de errores

  • Se corrigió el error de ProGuard por el que se quitaba la biblioteca principal.
  • Se corrigió el error por el que no se entregaba WindowLayoutInfo a suscriptores adicionales.
  • Se corrigió el error por el que los cambios de configuración no activaban las actualizaciones de las funciones de plegado.

Versión 1.0.0-alpha09

30 de junio de 2021

Lanzamiento de androidx.window:window-*:1.0.0-alpha09. La versión 1.0.0-alpha09 contiene estas confirmaciones.

Nuevas funciones

  • Se cambiaron las constantes de números enteros a enumeraciones no delimitadas.
  • Se agregó una utilidad de prueba para crear funciones de plegado de prueba.

Cambios en la API

  • Se agregó un método auxiliar para crear funciones de visualización de prueba. (I3cf54)
    • Se cambió de occlusionMode a occlusionType.

Correcciones de errores

  • Se emite un valor inicial cuando se agregan varios consumidores de los flujos de datos.

Versión 1.0.0-alpha08

16 de junio de 2021

Lanzamiento de androidx.window:window-*:1.0.0-alpha08. La versión 1.0.0-alpha08 contiene estas confirmaciones.

Nuevas funciones

  • Se lanzó un artefacto de prueba para facilitar las pruebas cuando se usa WindowInfoRepository. Usa WindowInfoRepository para obtener información sobre DisplayFeatures y WindowMetrics. (I57f66, Ida620)

Versión 1.0.0-alpha07

2 de junio de 2021

Lanzamiento de androidx.window:window-*:1.0.0-alpha07. La versión 1.0.0-alpha07 contiene estas confirmaciones.

Nuevas funciones

  • Migra la biblioteca de ventana principal a Kotlin. De ahora en adelante, utilizará corrutinas y suspenderá las funciones para exponer datos asíncronos.
  • Se agregó WindowInfoRepo como punto de interacción principal para obtener WindowMetrics y la transmisión de WindowLayoutInfo.
  • Se agregó el artefacto window-java para exponer las APIs compatibles con Java para registrar las devoluciones de llamada y cancelar su registro.
  • Se agregaron artefactos window-rxjava2 y window-rxjava3 para exponer las APIs que adapta RxJava.

Cambios en la API

  • Se agregó WindowServices para brindar dependencias de manera uniforme.
    • Se agregó una API basada en corrutinas para consumir la información del diseño de ventana. (Iab70f).
  • Se migró la biblioteca del administrador de ventana principal a Kotlin. (Icca34)

Correcciones de errores

  • Se agregó una clase nueva de datos para representar los límites de funciones. (I6dcd1)

Versión 1.0.0-alpha06

5 de mayo de 2021

Lanzamiento de androidx.window:window:1.0.0-alpha06. La versión 1.0.0-alpha06 contiene estas confirmaciones.

Nuevas funciones

  • Se comenzó con la migración a Kotlin y se terminará con ella en el próximo lanzamiento.
  • Se quitó DeviceState de la API pública. En su lugar, usa FoldingFeature.
  • Se quitó STATE_FLIPPED de los estados de FoldingFeature, ya que no se admiten en ningún caso de uso en este momento.
  • También se quitaron otras API obsoletas.

Cambios en la API

  • Se agregó Kotlin como dependencia.
    • Se migró la biblioteca principal a Kotlin. (Idd995)
  • Se quitó el compilador DisplayFeature. (I61fa4)
  • Se quitó DeviceState de la API pública. En su lugar, usa FoldingFeature. (Id6079)
  • Se quitó la devolución de llamada de estado del dispositivo de las extensiones. (I5ea83)
  • Se quitó STATE_FLIPPED de FoldingFeature. (I9c4e1)
  • Se quitaron los métodos de registro obsoletos. (Ib381b)

Versión 1.0.0-alpha05

24 de marzo de 2021

Lanzamiento de androidx.window:window:1.0.0-alpha05. La versión 1.0.0-alpha05 contiene estas confirmaciones.

Nuevas funciones

Se agregaron métodos prácticos a FoldingFeature para que las apps puedan detectar si la función está separada, se oculta y determina la orientación de la bisagra. También ocultamos el tipo de bisagra para que

se quiten los métodos de lectura síncronos de WindowManager. Estos métodos son propensos a errores, ya que existe una condición de carrera implícita. Se registran objetos de escucha y devoluciones de llamadas para recibir actualizaciones en WindowLayoutInfo.

Cambios en la API

  • Se agregaron métodos prácticos para trabajar con FoldingFeatures. (Ie733f)
  • Se quitaron los métodos de lectura síncronos de WindowManager. (I96fd4)

Versión 1.0.0-alpha04

10 de marzo de 2021

Lanzamiento de androidx.window:window:1.0.0-alpha04. La versión 1.0.0-alpha04 contiene estas confirmaciones.

Nuevas funciones

  • Corrige un error en el que no se emite WindowLayoutInfo si no hay una implementación de OEM. Ahora emitimos un WindowLayoutInfo vacío.
  • Se corrigió un error en el que el estado no se actualizaba correctamente si cambiaba el de la bisagra mientras la app estaba en segundo plano. Ahora el estado debe ser coherente.
  • Actualiza nuestros archivos ProGuard a fin de ignorar las advertencias de las dependencias en tiempo de ejecución.

Correcciones de errores

  • Emite un valor vacío cuando falta la biblioteca de OEM. (Ide935)

Versión 1.0.0-alpha03

18 de febrero de 2021

Lanzamiento de androidx.window:window:1.0.0-alpha03. La versión 1.0.0-alpha03 contiene estas confirmaciones.

Nuevas funciones

  • Emite un valor vacío para WindowLayoutInfo cuando la implementación del OEM está vacía. Esto debería facilitar el uso de la biblioteca en más dispositivos. Dado que las API son asíncronas, se recomienda que las apps escriban algún código defensivo y emitan un valor predeterminado después de que se agota el tiempo de espera. No tenemos garantías en las implementaciones del OEM, y el valor inicial puede retrasarse.

Correcciones de errores

  • Emite un valor vacío cuando falta la biblioteca de OEM. (Ide935)

Versión 1.0.0-alpha02

27 de enero de 2021

Lanzamiento de androidx.window:window:1.0.0-alpha02. La versión 1.0.0-alpha02 contiene estas confirmaciones.

Nuevas funciones

  • Dimos de baja algunas API a fin de optimizar la API y reducir errores. Por ejemplo, quitamos las operaciones de lectura síncronas de WindowManager y dimos de baja DeviceState. Las operaciones de lectura síncronas pueden generar condiciones de carrera y tener una IU incorrecta.

  • Convertimos la función DisplayFeature en una interfaz que otras funciones implementarán a partir de ahora. La primera función es FoldingFeature, que ahora es la representación del plegado de pantalla o la bisagra. También contiene el estado de la bisagra y reemplaza a DeviceState.

  • En Android 11, se introdujo WindowMetrics, que brinda a los desarrolladores una manera sencilla de consultar métricas sobre una ventana, como su posición y tamaño en la pantalla, y cualquier inserción del sistema. En esta versión, se incluyó portabilidad a versiones anteriores, a fin de que los desarrolladores puedan aprovechar WindowMetrics y seguir admitiendo versiones anteriores de Android. Se puede obtener WindowMetrics a través de las API de WindowManager#getMaximumWindowMetrics() y WindowManager#getCurrentWindowMetrics().

Cambios en la API

  • Se dieron de baja las API que se quitarán en la próxima versión alfa. (I7cc4)
  • Se actualizó ExtensionInterface para que acepte referencias explícitas de Activity. (I07ded)
  • Se incluyó la API de WindowMetrics. (I3ccee)
  • Se quitaron los métodos de lectura síncronos de WindowManager. (I69983)
  • ExtensionWindowBackend ahora está protegido por paquete. (Ied208)

Correcciones de errores

  • Se actualizaron las API de ExtensionInterface para que admitan contextos visuales. (I8e827)

Contribución externa

  • Se combinaron DeviceState y WindowLayoutInfo para facilitar el acceso a los datos. (Id34f4)

Versión 1.0.0-alpha01

27 de febrero de 2020

Lanzamiento de androidx.window:window:1.0.0-alpha01 y androidx.window:window-extensions:1.0.0-alpha01. La versión 1.0.0-alpha01 contiene estas confirmaciones. Esta es la primera versión de la biblioteca de Window Manager.

Nuevas funciones

  • DisplayFeature: Esta nueva API identifica interrupciones en las superficies continuas de pantallas planas, como bisagras o pliegues.
  • DeviceState: Esta nueva API proporciona la posición actual del teléfono a partir de una lista de posiciones definidas (por ejemplo, CLOSED, OPENED, HALF_OPENED, etc.).