WindowManager
Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
---|---|---|---|---|
7 de agosto de 2024 | 1.3.0 | - | - | 1.4.0-alpha01 |
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.
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-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 aíslen la navegación del otro.
- El divisor interactivo permite que las apps muestren una línea divisoria fija o arrastrable entre las dos actividades en una presentación dividida.
- La opción Atenuación de diálogos de pantalla completa permite que las apps especifiquen el área de atenuación de los diálogos para atenuar toda la ventana de tareas o solo atenuar 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 esta ventana.
- El fondo de animación de incorporaciones 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 de ActivityStack mejorada permite que las apps tengan más control sobre
ActivityStacks
cuando se usaActivityEmbedding
, lo que incluye lo siguiente: - Cómo iniciar una actividad en un
ActivityStack
especificado - Cómo finalizar un
ActivityStack
Cambios en la API
Una nueva API de
WindowInfoTracker#supportedPostures
:- Es una API para determinar si el dispositivo es compatible con el modo de mesa en dispositivos plegables. Agrega WindowAreaSessionPresenter#getWindow.
Agrega APIs para admitir la fijación de
ActivityStack
:- Clase
SplitPinRule
SplitController#pinTopActivityStack
SplitController#unpinTopActivityStack
- Clase
Agrega APIs para habilitar y configurar la línea divisoria interactiva
- Clase
DividerAttributes
SplitAttributes.Builder#setDividerAttributes
- Clase
Se agregaron APIs para configurar
EmbeddingConfiguration
yDimAreaBehavior
para los diálogos.- Clase
EmbeddingConfiguration
- Clase
DimAreaBehavior
ActivityEmbeddingController#setEmbeddingConfiguration
- Clase
Agrega APIs para recibir actualizaciones de información de las ventanas de actividad incorporadas
- Clase
EmbeddedActivityWindowInfo
ActivityEmbeddingController#embeddedActivityWindowInfo
- Clase
Agrega APIs para establecer el fondo de animación de incorporación
EmbeddingAnimationBackground
SplitAttributes.Builder#setAnimationBackground
Agrega 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 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
- Corrige el error en ciertos dispositivos en los que se mostraba UNAVAILABLE en lugar de ACTIVE cuando una sesión está activa.
- Se quitó la compatibilidad con
transferActivityToWindowArea
en dispositivos convendorApiLevel
de 2 debido a que la compatibilidad de la API es inestable. - Se introdujo la API para habilitar la función de arrastrar a pantalla completa en el divisor arrastrable de Incorporación de actividades. (I645c9).
- Permitir que las apps inhabiliten las animaciones de
ActivityEmbedding
mediante parámetros de animación paraSplitAttributes
(Idc01a). - Se quitó la descripción manual del acceso a las nuevas APIs de la plataforma, ya que esto sucede automáticamente a través del modelado de APIs cuando se usa R8 con AGP 7.3 o versiones posteriores (por ejemplo, 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 usan AGP que actualicen a D8 8.1 o versiones posteriores. Consulta este artículo para obtener más detalles. (Ia60e0, b/345472586).
- Permite que las extensiones tomen parámetros de animación para
SplitAttributes
, de modo que el dispositivo pueda usarlos en las transiciones de animación (Iede00). - Se ocultaron las APIs de superposición (Ic4251).
- Se agregaron APIs para configurar el divisor fijo o arrastrable de la división (Ia7a78).
- Se agregó densidad a
WindowMetrics
(Id6723). - Agrega una 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 de
embeddedActivityWindowInfo
(Ida77f). - Se agregó un adaptador de devolución de llamada para la API de monitoringInfo flow (I7264f).
- Introduce
WindowSdkExtensionsRule
para anularextensionsVersion
para pruebas. (Ifb928). - - Migra
#setLaunchingActivityStack
a Bundle para que sea compatible con los usos deActivityOptionsCompat
.- Los usuarios deben pasar
activityOptions.toBundle
en lugar deActvityOptions
en sí. - Se quita
#setLaunchingActivityStack(Activity)
. Los usuarios deben migrar para usarActivityEmbeddingController#getActivityStac(Activity)
y obtener unActivityStack
y pasar elActivityStack
a#setLaunchingActivityStack
. (Ie0ccc).
- Los usuarios deben pasar
- - Introduce
ActivityStack.Token
ySpltInfo.Token
como identificadores para la comunicación entre WM Jetpack y las extensiones.- Las APIs dejaron de estar disponibles o se reemplazaron para tomar y mostrar tokens en lugar de IBinder. (I12b24).
- - Presentación de
ActivityEmbeddingController#invalidateVisibleActivityStacks
- Se quitó
SplitController#invalidateTopVisibleSplitAttributes
porque la función se consolidó en#invalidateVisibleActivityStacks
. (I02ef5)
- Se quitó
- - Agregado de API para establecer la configuración de incorporación. (I59a4a).
- - Se agregaron las APIs de
androidx.Window
deActivityStack
principales que se fijaron o no se fijaron.- Se actualizó la app de demo para permitir fijar o dejar de fijar
ActivityStack
en la parte superior. (I24dd3)
- Se actualizó la app de demo para permitir fijar o dejar de fijar
- Se volvió a agregar
#finishActivityStacks
yActivityEmbeddingOptions
. (Ic1ab3) - Quita 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 de Kotlin multiplataforma con las clases de tamaño de ventana
Versión 1.3.0-rc01
14 de mayo de 2024
WindowManager
Jetpack 1.3 ofrece compatibilidad multiplataforma de Kotlin 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ó
KotlinReflectionInternalError
que se producía 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). - Se restableció
WindowSizeClass#compute
. (I21355, b/324293374)
Correcciones de errores
- Se corrigió una falla en la que el contexto proporcionado no se desenvolvía 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 superficie de la API de las APIs de Window Size Class a fin de mejorar la flexibilidad para los desarrolladores que quieran 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 de selector para elegir elWindowSizeClass
más ancho 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 conveniente 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 que se producía cuando el valor 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 expusieron las APIs de ventana experimental 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 deUiContext
.WindowInfoTracker
informa los datos de los componentes plegables según los parámetrosUiContext
.- Expón la versión de las extensiones en el dispositivo.
- Constantes
WindowProperties
para anulaciones por app de usuario:PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
: Informa al sistema en el que la app inhabilitó la compatibilidad con la relación de aspecto para el usuario anulación.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
— Informa el sistema en el que la aplicación inhabilitó la opción de pantalla completa del usuario configuración de anulación de compatibilidad de relación de aspecto
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 expusieron las APIs de ventana experimental 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 deUiContext
.WindowInfoTracker
informa los datos de los componentes plegables según los parámetrosUiContext
.- Expón la versión de las extensiones 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 expusieron las APIs de ventana experimental 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 deUiContext
.WindowInfoTracker
informa los datos de los componentes plegables según los parámetrosUiContext
.- Expón la versión de las extensiones 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
- Quita las APIs inestables. (Ibc534, b/302380585).
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
- Anota la versión de la extensión del SDK de ventana requerida en las APIs públicas.
- Quita
isXXXSupported
del componente Incorporación de actividades. (Ie3dae).
- Quita
- Incorpora
WindowSdkExtensions
para informar la versión de la extensión en el dispositivo.- Introduce
RequiresWindowSdkExtension
para anotar la versión de extensión mínima requerida. (I05fd4).
- Introduce
- Hace que
WindowAreaInfo#getCapability
no admita valores nulos. (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 expusieron las APIs de ventana experimental 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 deUiContext
.WindowInfoTracker
informa los datos de los componentes plegables según los parámetrosUiContext
.
Cambios en la API
- Se marcan las APIs de
WindowArea
como experimentales para permitir que los cambios en la API continúen en una versión estable en 1.3 (I857f5). - Se actualizaron los archivos de la 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
- Quitar las APIs obsoletas de la superficie de la API
- Se agregaron APIs para admitir pantallas simultáneas.
- Agrega una propiedad para inhabilitar la anulación de cambio de tamaño forzada.
- Agrega una propiedad para inhabilitar la anulación de relación de aspecto mínima.
- Estabiliza
ActivityEmbeddingRule
para admitir pruebas de unidades en torno a la incorporación de actividades.
Cambios en la API
Correcciones de errores
- Se agregó una propiedad de compatibilidad de inhabilitación para forzar la anulación de cambio de tamaño (Ie7ab1).
- Quita
SESSION_STATE_CONTENT_INVISIBLE
de la interfaz de extensiones. (I6ed19). - Estabiliza
ActivityEmbeddingRule
para admitir pruebas de unidades en torno a la incorporación de actividades. (I8d6b6). - Se agregó la propiedad de inhabilitación de compatibilidad para la anulación mínima de la relación de aspecto. (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 las constantes de sesión del área de la ventana. (I83675)
- Se agregó una propiedad de compatibilidad de inhabilitación que ignora el bucle de solicitud de orientación cuando se detecta. (I0a7a2)
- Agrega
WindowAreaComponent#STATUS_ACTIVE
para indicar que el componente ya está activo. (I62bc3). - Se agregaron las APIs de
RearDisplayPresentationMode
(I0401c). - Se quitó la API de color de fondo para que sea estable (I34c3e).
- Se ocultaron las APIs de Window Area. (I39de0).
- Se agregaron métodos para anular
SplitInfo
enSplitController
. Se agregaron métodos de prueba a fin de crear un doble paraSplitInfo
yActivityStack
. (Icd69f). - Haz que la etiqueta sea opcional para
ActivityRule.Builder
. (Ib0b44). - Se quitaron
RatioSplitType
,ExpandContainersSplit
yHingeSplitType
. Ahora sonSplitType
.- Se reemplazaron
#splitEqually()
,#expandContainers()
y#splitByHinge
por los valores constantesSplitType SPLIT_TYPE_EQUAL
,SPLIT_TYPE_EXPAND
ySPLIT_TYPE_HINGE
. - Quita la funcionalidad para establecer el tipo de resguardo del tipo de división de bisagra. Si el tipo de división de bisagra no se puede aplicar debido al estado actual del dispositivo o de la ventana, se recurre a la división del contenedor de tareas superior por igual. Usa
SplitController#setSplitAttributesCalculator
para personalizar el tipo de división de resguardo. (Ifcc59).
- Se reemplazaron
- Dar de baja
add
/removeSplitCallback
- Mover
add
/removeSplitCallback
aSplitControllerCallbackAdapter
- Se agregó compatibilidad con
Flow
para obtener la listaSplitInfo
. (I7f1b6)
- Mover
- Se agregó una regla de prueba para
ActivityEmbeddingController
(I42e9b). - Se cambió el nombre de
ActivityOptionsCompat
porActivityEmbeddingOptions
. (I89301) - Se agregó
splitSupportStatus
para indicar si está disponible la incorporación de Activity (I10024). - Introduce
SplitAttributes.BackgroundColor
para representar mejor el valorDEFAULT
. Aclara que no se admite el color de fondo de animación que no sea opaco, por lo que cualquier color que no sea opaco se tratará como predeterminado, lo que significa que se debe usar el color de fondo de la ventana del tema actual. (Ic6b95). - Se reemplazaron
alwaysAllow()
yalwaysDisallow()
porALWAYS_ALLOW
yALWAYS_DISALLOW
. (I3057b). - Se agregaron APIs para
SplitRule
,SplitAttributes
ySplitAttributesCalculator
(I92d23). - Agrega
TestActivityStack
a fin de crearActivityStack
para realizar pruebas.- Agrega
TestSplitInfo
a fin de crearSplitInfo
para realizar pruebas. (I8e779).
- Agrega
- Se agregó una forma de crear
SplitAttributesCalculatorParams
falsa para que los desarrolladores puedan verificar suSplitAttributesCalculator
personalizada (Id4a6e). - Se agregaron
WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)
yWindowMetricsCalculator#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 a fin de tener una constante para las funciones de plegado no especificadas.
- La anulación con
WindowLayoutInfoPublishRule
anulará todos los valores dewindowLayoutInfo
, 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 enWindowLayoutInfo
basadas enContext
. (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
Estabiliza las APIs de prueba en torno a Activity Embedding y WindowLayoutInfoTracker
. Se ascendió ActivityEmbeddingRule
a estable.
Se ascendió WindowMetricsCalculatorRule
a estable.
Se pasaron a estable las funciones de utilidad para crear un FoldingFeature
para pruebas.
Cambios en la API
- Estabiliza
ActivityEmbeddingRule
para admitir pruebas de unidades en torno a la incorporación de actividades. (I8d6b6). WindowMetrisCalculatorTestRule
es estable, lo que 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 atributos 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 actividad
- Se agregó
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
como propiedad booleana de la etiqueta<application>
en el manifiesto de la app. isSplitSupported
dejó de estar disponible y se reemplazó porsplitSupportStatus
para proporcionar información más detallada sobre por qué la función de división no está disponible.- Se agregó la clase anidada
SplitController.SplitSupportStatus
para proporcionar constantes de estado para la propiedadsplitSupportStatus
. - Se refactorizó
SplitController
en varios módulos:- Módulo
ActivityEmbeddingController
para las APIs relacionadas conActivity
oActivityStack
. - Se movió
isActivityEmbedded
deSplitController
aActivityEmbeddingController
. - Módulo
RuleController
para operaciones relacionadas conEmbeddingRule
: - Se quitaron las APIs de
SplitController
: clearRegisteredRules()
getSplitRules()
initialize()
registerRule()
unregisterRule()
- Se agregaron APIs de
RuleController
: addRule()
: Agrega una regla o actualiza la 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 reglas a partir de definiciones de reglas XML.
- Módulo
- Todos los módulos requieren que se inicialice un contexto con el método
#getInstance()
, incluido lo siguiente:ActivityEmbeddingController#getInstance(Context)
SplitController#getInstance(Context)
RuleController#getInstance(Context)
- Se agregó la clase
EmbeddingAspectRatio
para definir constantes de comportamiento similares a las de enumeración 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
aSplitController
para personalizar los diseños de división:setSplitAttributesCalculator(Function)
clearSplitAttributesCalculator()
isSplitAttributesCalculatorSupported()
para verificar si el dispositivo admite las APIs deSplitAttributesCalculator
- 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. reemplaza asplitRatio
ylayoutDirection
. - Se agregó una traducción de las propiedades de XML
splitRatio
ysplitLayoutDirection
adefaultSplitAttributes
. - Se cambiaron las definiciones de dimensión mínimas para usar píxeles independientes de la densidad (dp) en lugar de píxeles.
- Se agregó
minHeightDp
con valor predeterminado de 600 dp. - Se cambió
minWidth
aminWidthDp
con el valor predeterminado de 600 dp. - Se cambió
minSmallestWidth
aminSmallestWidthDp
con el valor predeterminado de 600 dp. - Se agregó
maxAspectRatioInHorizontal
con el valor predeterminadoALWAYS_ALLOW
. - Se agregó
maxAspectRatioInPortrait
con 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
ySplitPlaceholderRule
.
- Se agregó
- Se reemplazó
SplitInfo#getSplitRatio()
porSplitInfo#getSplitAttributes()
para proporcionar información adicional relacionada con la división.
WindowLayout.
- Se agregó compatibilidad con el contexto de la IU experimental sin actividad a
WindowInfoTracker
. - Se agregó a
WindowMetricsCalculator
el contexto experimental de la IU sin actividad.
Pasos para la migración
- Para habilitar la incorporación de actividades a fin de 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 la división para una aplicación con anticipación. - Proporció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. }
- Verifica si la división actual está apilada:
- Migraciones de SplitController:
SplitController.getInstance()
cambia aSplitController.getInstance(Context)
.SplitController.initialize(Context, @ResId int)
cambia aRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
.SplitController.getInstance().isActivityEmbedded(Activity)
cambia aActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
.SplitController.getInstance().registerRule(rule)
cambia aRuleController.getInstance(Context).addRule(rule)
.SplitController.getInstance().unregisterRule(rule)
cambia aRuleController.getInstance(Context).removeRule(rule)
.SplitController.getInstance().clearRegisteredRules()
cambia aRuleController.getInstance(Context).clearRules()
.SplitController.getInstance().getSplitRules()
cambia aRuleController.getInstance(Context).getRules()
.
- Migraciones de propiedades
SplitRule
:minWidth
yminSmallestWidth
ahora usan unidades dp en lugar de píxeles. Las apps pueden usar la siguiente llamada:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )
o, simplemente, divideminWith
en píxeles pordisplayMetrics#density
.
- Las constantes de comportamiento de finalización deben migrarse a constantes de clase de tipo enum
FinishBehavior
:FINISH_NEVER
cambia aFinishBehavior.NEVER
.FINISH_ALWAYS
cambia aFinishBehavior.ALWAYS
.FINISH_ADJACENT
cambia aFinishBehavior.ADJACENT
.
- La dirección del diseño se debe migrar a
SplitAttributes.LayoutDirection
:ltr
cambia aSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
.rtl
cambia aSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
.locale
cambia aSplitAttributes.LayoutDirection.LOCALE
.splitRatio
debe migrarse aSplitAttributes.SplitType.ratio(splitRatio)
.
SplitPairRule.Builder
migraciones:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
cambia akotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
setLayoutDirection(layoutDirection)
ysetSplitRatio(ratio)
cambian akotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
setFinishPrimaryWithSecondary
ysetFinishSecondaryWithPrimary
toman las constantes de tipo enumFinishBehavior
. Consulta “Migraciones de SplitRule” para obtener más detalles.- Usa
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
para mostrar divisiones en dispositivos verticales.
SplitPlaceholder.Builder
migraciones:- Solo tiene los parámetros
filters
yplaceholderIntent
. Otras propiedades se trasladan a métodos set. Consulta “Migraciones de SplitPairRule.Builder” para obtener más detalles. setFinishPrimaryWithPlaceholder
toma las constantes de tipo enumFinishBehavior
. Consulta “Migraciones de SplitRule” para obtener más detalles.setLayoutDirection(layoutDirection)
ysetSplitRatio(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.
- Solo tiene los parámetros
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
- Lanza
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 y limpieza internas.
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 actividad
- Se agregó
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
como propiedad booleana de la etiqueta<application>
en el manifiesto de la app. isSplitSupported
dejó de estar disponible y se reemplazó porsplitSupportStatus
para proporcionar información más detallada sobre por qué la función de división no está disponible.- Se agregó la clase anidada
SplitController.SplitSupportStatus
para proporcionar constantes de estado para la propiedadsplitSupportStatus
. - Se refactorizó
SplitController
en varios módulos:- Módulo
ActivityEmbeddingController
para las APIs relacionadas conActivity
oActivityStack
. - Se movió
isActivityEmbedded
deSplitController
aActivityEmbeddingController
. - Módulo
RuleController
para operaciones relacionadas conEmbeddingRule
: - Se quitaron las APIs de
SplitController
:clearRegisteredRules()
getSplitRules()
initialize()
registerRule()
unregisterRule()
- Se agregaron APIs de
RuleController
:addRule()
: Agrega una regla o actualiza la 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 reglas a partir de definiciones de reglas XML.
- Módulo
- Todos los módulos requieren que se inicialice un contexto con el método
#getInstance()
, incluido lo siguiente:ActivityEmbeddingController#getInstance(Context)
SplitController#getInstance(Context)
RuleController#getInstance(Context)
- Se agregó la clase
EmbeddingAspectRatio
para definir constantes de comportamiento similares a las de enumeración 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
aSplitController
para personalizar los diseños de división:setSplitAttributesCalculator(Function)
clearSplitAttributesCalculator()
isSplitAttributesCalculatorSupported()
para verificar 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. reemplaza asplitRatio
ylayoutDirection
. - Se agregó una traducción de las propiedades de XML
splitRatio
ysplitLayoutDirection
adefaultSplitAttributes
. - Se cambiaron las definiciones de dimensión mínimas para usar píxeles independientes de la densidad (dp) en lugar de píxeles.
- Se agregó
minHeightDp
con valor predeterminado de 600 dp. - Se cambió
minWidth
aminWidthDp
con el valor predeterminado de 600 dp. - Se cambió
minSmallestWidth
aminSmallestWidthDp
con el valor predeterminado de 600 dp. - Se agregó
maxAspectRatioInHorizontal
con el valor predeterminadoALWAYS_ALLOW
. - Se agregó
maxAspectRatioInPortrait
con el valor predeterminado1.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
deSplitPairRule
ySplitPlaceholderRule
.
- Se agregó
- Se reemplazó
SplitInfo#getSplitRatio()
porSplitInfo#getSplitAttributes()
para proporcionar información adicional relacionada con la división.
WindowLayout.
- Se agregó compatibilidad con el contexto de la IU sin actividad a
WindowInfoTracker
. - Se agregó a
WindowMetricsCalculator
el contexto de la IU sin actividad.
Pasos para la migración
- Para habilitar la incorporación de actividades a fin de 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 la división para una aplicación con anticipación. - Proporció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. }
- Verifica si la división actual está apilada:
SplitController
migraciones:SplitController.getInstance()
cambia aSplitController.getInstance(Context)
.SplitController.initialize(Context, @ResId int)
cambia aRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
SplitController.getInstance().isActivityEmbedded(Activity)
cambia aActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
.SplitController.getInstance().registerRule(rule)
cambia aRuleController.getInstance(Context).addRule(rule)
.SplitController.getInstance().unregisterRule(rule)
cambia aRuleController.getInstance(Context).removeRule(rule)
.SplitController.getInstance().clearRegisteredRules()
cambia aRuleController.getInstance(Context).clearRules()
.SplitController.getInstance().getSplitRules()
cambia aRuleController.getInstance(Context).getRules()
.
- Migraciones de propiedades
SplitRule
:minWidth
yminSmallestWidth
ahora usan unidades dp en lugar de píxeles. Las apps pueden usar la siguiente llamada:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )
o, simplemente, divideminWith
en píxeles pordisplayMetrics#density
.
- Las constantes de comportamiento de finalización deben migrarse a constantes de clase de tipo enum
FinishBehavior
:FINISH_NEVER
cambia aFinishBehavior.NEVER
.FINISH_ALWAYS
cambia aFinishBehavior.ALWAYS
.FINISH_ADJACENT
cambia aFinishBehavior.ADJACENT
.
- La dirección del diseño se debe migrar a
SplitAttributes.LayoutDirection
:ltr
cambia aSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
.rtl
cambia aSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
.locale
cambia aSplitAttributes.LayoutDirection.LOCALE
.splitRatio
debe migrarse aSplitAttributes.SplitType.ratio(splitRatio)
.
SplitPairRule.Builder
migraciones:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
cambia akotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
setLayoutDirection(layoutDirection)
ysetSplitRatio(ratio)
cambian akotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
setFinishPrimaryWithSecondary
ysetFinishSecondaryWithPrimary
toman las constantes de tipo enumFinishBehavior
. Consulta “Migraciones de SplitRule” para obtener más detalles.- Usa
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
para mostrar divisiones en dispositivos verticales.
SplitPlaceholder.Builder
migraciones:- Solo tiene los parámetros
filters
yplaceholderIntent
. Otras propiedades se trasladan a métodos set. Consulta “Migraciones de SplitPairRule.Builder” para obtener más detalles. setFinishPrimaryWithPlaceholder
toma las constantes de tipo enumFinishBehavior
. Consulta “Migraciones de SplitRule” para obtener más detalles.setLayoutDirection(layoutDirection)
ysetSplitRatio(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.
- Solo tiene los parámetros
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 modoRearDisplay
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
ySplitAttributesCalculator
(I92d23). - Se mejoraron las APIs en torno a
maxAspectRatio
:- Se reemplazaron
alwaysAllow()
yalwaysDisallow()
porALWAYS_ALLOW
yALWAYS_DISALLOW
. - Se actualizó la documentación de la API de @see con documentación independiente (I3057b).
- Se reemplazaron
- Se quitaron los siguientes constructores de las APIs públicas porque no se supone que las apps los llamen.
- Constructor
SplitInfo
. - Constructor
ActivityStack
(Ide534).
- Constructor
SplitRule
ahora tomamaxAspectRatioInPortrait/Landscape
. Solo permite actividades divididas cuando la relación de aspecto de los límites superiores es menor o igual que el objetomaxAspectRatio
solicitado (Ia5990).- Se cambió
RuleController#parseRules
para que sea estático (I785df). - Mejora las APIs en torno a ActivityEmbedding.
- Se alinearon los nombres de las APIs. Se usó la función de agregar o quitar para varias instancias:
registerRule
cambió aaddRule
unregisterRule
cambió aremoveRule
- Se reemplazó
getSplitRules
porgetRules
, ya queActivityRule
no es una regla de división. - Se agregó
RuleController#setRules
para configurar varias reglas. - Se movieron las APIs relacionadas con las reglas de
SplitController
a singletonRuleController
. Son: addRule
removeRule
getRules
setRules
clearRules
parseRules
- Se movió
#isActivityEmbedded
deSplitController
a singletonActivityEmbeddingController
. Es isActivityEmbedded
- Se quitó
SplitController#initialize
. Para configurar reglas del archivo en formato XML, usaRuleController#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)
- 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 deSplitController#clearRegisteredRules
, llama aRuleController#parseRules
con el ID de recursos XML y llama aRuleController#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:
- Se tomaron las dimensiones mínimas en DP en lugar de píxeles para
SplitRule
. - Se refactorizó para que el compilador de
SplitRule
tome las dimensiones mínimas como opcionales (I95f17).
- Se tomaron las dimensiones mínimas en DP en lugar de píxeles para
- Se pasó un contexto para inicializar
SplitController
(I42549). - Se cambió el nombre de
SplitRule#layoutDir
por#layoutDirection
y el deSplitRule Builder#setLayoutDir
porBuilder#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 paraActivityEmbedding
. - Se quitaron las etiquetas de API experimental de las APIs de
ActivityEmbedding
. - Se ocultó el constructor
ActivityRule
, ya queBuilder
es la forma preferida de construir. - Se agregó un método experimental para obtener los
WindowInsets
enWindowMetrics
. - 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ónisEmpty
. - Se cambió el nombre de las actividades del parámetro
ActivityStack
aactivitiesInProcess
(Ia5055). - Se quitaron
ActivityFilter#matchesClassName
yActivityFilter#matchesClassNameOrWildCard
porque son confusos. - Se agregaron
ActivityFilter#componentName
yActivityFilter#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). - Se ocultó el constructor
ActivityRule
; en su lugar, usa Builder. (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
yWindowMetricsCalculatorCompat
(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
ySplitPlaceholderRule.finishPrimaryWithPlaceholder
. Esto reemplaza la actualSplitPlaceholderRule.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 modoRearDisplay
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
yFoldingFeature
.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 para 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
- Se corrigió la fuga de memoria. (I3fc79, b/202989046).
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ón1.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
aocclusionType
.
- Se cambió de
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
ywindow-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, usaFoldingFeature
. (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.).