WindowManager

La biblioteca de WindowManager de Jetpack permite que los desarrolladores de aplicaciones admitan nuevos factores de forma de dispositivos y entornos multiventana. La biblioteca brinda una plataforma de API común para las versiones 14 y posteriores de la API. 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 actual Próxima versión potencial Versión beta Versión alfa
17 de noviembre de 2021 - - 1.0.0-beta04 -

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.0.0-beta04"

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

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

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

    // For testing
    implementation "androidx.window:window-testing:1.0.0-beta04"
}

Kotlin

dependencies {
    implementation("androidx.window:window:1.0.0-beta04")

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

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

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

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

Comentarios

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

Cómo crear un error nuevo

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

Versión 1.0

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 API 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 API 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 API 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 API compatibles con Java a fin de registrar las devoluciones de llamada y cancelar su registro.
  • Se agregaron artefactos window-rxjava2 y window-rxjava3 para exponer las API 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.).