Compatibilidad con la renderización en ventanas de escritorio

La renderización en ventanas en computadoras de escritorio permite a los usuarios ejecutar varias apps simultáneamente en la que se puede cambiar el tamaño. las ventanas de aplicaciones para tener una experiencia versátil, similar a la de una computadora de escritorio.

En la figura 1, puedes ver la organización de la pantalla con la renderización en ventanas de escritorio. habilitado. Información que debes tener en cuenta:

  • Los usuarios pueden ejecutar varias apps en paralelo de forma simultánea.
  • La barra de tareas está en una posición fija en la parte inferior de la pantalla y muestra las apps en ejecución. Los usuarios pueden fijar apps para acceder a ellas rápidamente.
  • La nueva barra de encabezado personalizable decora la parte superior de cada ventana con controles como minimizar y maximizar.
Figura 1: Ventanas de escritorio en una tablet.

De forma predeterminada, las apps se abren en pantalla completa en las tablets Android. Para iniciar una app en ventanas de escritorio, mantén presionado el control de la ventana en la parte superior de la pantalla y arrástralo dentro de la IU, como se muestra en la figura 2.

Cuando una aplicación se abre en un sistema de ventanas de escritorio, otras aplicaciones se abren en ventanas de escritorio como en la nube.

Figura 2: Mantén presionado el control de la ventana de la app y arrástralo para ingresar al modo de ventanas de escritorio.

Los usuarios también pueden invocar la renderización en ventanas de escritorio desde el menú que aparece debajo de el controlador de la ventana cuando presionas o haces clic en el controlador, o usas la combinación de teclas Tecla Meta (Windows, Comando o Búsqueda) + Ctrl + Abajo.

Para salir de la ventana del escritorio, los usuarios cierran todas las ventanas activas o toman el control de la ventana en la parte superior de una ventana de escritorio y arrastran la app a la parte superior de la pantalla. También puedes salir de la combinación de teclas Meta + H. el sistema de ventanas del escritorio y vuelve a ejecutar las aplicaciones en pantalla completa.

Para volver a la ventana de escritorio, presiona o haz clic en la tarjeta de espacio de escritorio en la pantalla de elementos recientes.

Modo de compatibilidad y cambio de tamaño

En el sistema de ventanas de escritorio, las apps con orientación fija se pueden cambiar de tamaño libremente. Eso significa que, incluso si una actividad está bloqueada en orientación vertical, los usuarios pueden cambiar el tamaño de la app a una ventana de orientación horizontal.

Figura 3: Cambiar el tamaño de la ventana de una app solo con orientación vertical a horizontal

Las apps declaradas como no ajustables (es decir, resizableActivity = false) tienen su IU ajustada mientras se mantiene la misma relación de aspecto.

Figura 4: La IU de una app que no cambia de tamaño se ajusta a medida que cambia el tamaño de la ventana.

Las apps de cámara que bloquean la orientación o se declaran como no ajustables tienen una tratamiento especial para los visores de la cámara: la ventana puede cambiar de tamaño por completo, pero el visor mantiene la misma relación de aspecto. Si supones que las apps siempre se ejecutan en modo vertical u horizontal, las apps codifican de forma rígida o hacen suposiciones que llevan a errores de cálculo de la vista previa o la orientación de la imagen capturada o la relación de aspecto, lo que genera imágenes estiradas, laterales o al revés.

Hasta que las apps estén listas para implementar visores de cámara completamente responsivos, el tratamiento especial proporciona una experiencia del usuario más básica que mitiga los efectos que pueden causar las suposiciones incorrectas.

Para obtener más información sobre el modo de compatibilidad de las apps de cámara, consulta Modo de compatibilidad del dispositivo.

Figura 5: El visor de la cámara conserva la relación de aspecto a medida que cambia el tamaño de la ventana.

Inserciones de encabezado personalizables

Todas las apps que se ejecutan en ventanas de escritorio tienen una barra de encabezado, incluso en el modo envolvente.
Asegúrate de que la barra del encabezado no oculte el contenido de tu app. La barra de encabezado es un tipo de inserción de barra de leyenda: androidx.compose.foundation.layout.WindowInsets.Companion.captionBar(); en vistas, WindowInsets.Type.captionBar(), que forma parte de las barras del sistema.

Puedes obtener más información para controlar las inserciones en Cómo mostrar el contenido de borde a borde en tu app y controlar las inserciones de ventana en Compose.

La barra del encabezado también se puede personalizar. Android 15 introdujo el tipo de apariencia APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND para hacer que la barra del encabezado sea transparente y permitir que las apps dibujen contenido personalizado dentro de ella.

Así, las apps se encargan de diseñar la parte superior del contenido para la barra de subtítulos (fondo, contenido personalizado, etc.) con la a excepción de los elementos de leyendas del sistema (botones para cerrar y maximizar), que son dibujado por el sistema en la barra de subtítulos transparente de la parte superior de la app.

Las apps pueden activar o desactivar la apariencia de los elementos del sistema dentro de la leyenda para los temas claro y oscuro con APPEARANCE_LIGHT_CAPTION_BARS, similar a la que se activa o desactiva la barra de estado y la de navegación.

Android 15 también introdujo WindowInsets#getBoundingRects() que permite a las apps examinar las inserciones de la barra de subtítulos con más detalle. Las apps pueden diferenciar entre áreas en las que el sistema dibuja elementos del sistema y áreas no utilizadas en las que las apps pueden colocar contenido personalizado sin superposición de elementos del sistema.

La lista de objetos Rect que muestra la API indica las regiones del sistema que se deben evitar. El espacio restante (que se calcula restando los rectángulos de los rellenos de la barra de subtítulos) es donde la app puede dibujar sin superponer elementos del sistema y con la capacidad de recibir entradas.

Chrome antes y después de implementar encabezados personalizados.
Figura 6: Chrome antes y después de implementar encabezados personalizados.

Compatibilidad con instancias y tareas múltiples

La multitarea es el núcleo del sistema de ventanas de escritorio y permite múltiples de tu app pueden aumentar mucho la productividad de los usuarios.

Android 15 introduce PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI, qué aplicaciones pueden configurar para especificar que se debe mostrar la IU del sistema para que la aplicación permiten que se inicie como varias instancias.

Administra las instancias de la app con gestos de arrastre

En el modo multiventana, los usuarios pueden iniciar una nueva instancia de app arrastrando una vista. fuera de la ventana de la app. Los usuarios también pueden mover elementos entre instancias de la misma app.

Figura 7: Para iniciar una nueva instancia de Chrome, arrastra una pestaña fuera de la ventana del escritorio.

Android 15 presenta dos marcas para personalizar el comportamiento de arrastrar y soltar:

  • DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG: Indica que se debe delegar un arrastre no controlado al sistema para que se inicie. Si no hay ninguna ventana visible, controla la acción de soltar. Cuando se usa esta marca, el emisor debe proporcionar ClipData con un Item que contiene un IntentSender inmutable a un actividad que se iniciará (consulta ClipData.Item.Builder#setIntentSender()). El sistema puede iniciar o no el intent en función de factores como la pantalla actual. el tamaño del panel o el modo de renderización en ventanas. Si el sistema no inicia el intent, este se cancela a través del flujo normal de arrastrar y soltar.

  • DRAG_FLAG_GLOBAL_SAME_APPLICATION: Indica que una operación de arrastre puede cruzar los límites de las ventanas (para varias instancias de la misma aplicación).

    Cuando se llama a startDragAndDrop() con esta marca establecida, solo las ventanas visibles que pertenecen a la misma aplicación pueden participar en la operación de arrastre y recibir el contenido arrastrado.

Figura 8: Mover una pestaña entre dos instancias de la app de Chrome.

Optimizaciones adicionales

Personaliza los inicios de las apps y realiza la transición de las apps de la renderización en ventanas de escritorio a la pantalla completa.

Especifica el tamaño y la posición predeterminados

No todas las apps, incluso si se pueden cambiar de tamaño, necesitan una ventana grande para ofrecer valor al usuario. Puedes usar el método ActivityOptions#setLaunchBounds() para especificar un tamaño y una posición predeterminados cuando se inicia una actividad.

Cómo ingresar al modo de pantalla completa desde el espacio de escritorio

Las apps pueden ingresar al modo de pantalla completa de forma programática llamando a Activity#requestFullScreenMode() El método coloca la app en el modo de pantalla completa directamente desde la ventana del escritorio.