Sugerencias y precauciones adaptables

Las apps adaptables admiten pantallas de todos los tamaños: toda la pantalla del dispositivo, que puede cambiar de tamaño ventanas en modo multiventana, con orientación vertical y horizontal, plegadas y desplegadas de dispositivos plegables.

Una breve lista de parámetros de configuración y APIs te permite compilar modelos de Google Chat. Sin embargo, algunos parámetros de configuración y APIs desactualizados no son compatibles con las apps adaptables y deben evitarse.

Capacidad de cambio de tamaño

Las apps adaptables admiten la capacidad de cambiar el tamaño y el modo multiventana.

El atributo resizeableActivity de <activity> y Los elementos del manifiesto de <application> habilitan o inhabilitan el modo multiventana en Android 11 (nivel de API 30) y versiones anteriores. En Android 12 (nivel de API 31) y más altas, las pantallas grandes admiten el modo multiventana, independientemente de la . Para obtener más información, consulta Cómo admitir el modo multiventana.

✓ Acción

Habilita tu app para que participe en situaciones multiventana y de tareas múltiples para aumenta la productividad y la satisfacción de los usuarios.

Establece resizeableActivity="true" si tu app está orientada a niveles de API inferiores al 24. de lo contrario, olvídate de él; es true de forma predeterminada en Android 7.0 (API nivel 24) y versiones posteriores.

✗ Evita las acciones

No configures resizeableActivity="false" para ningún nivel de API. No excluyas tu aplicación de los casos de uso que involucran el modo multiventana.

Orientación

Las apps adaptables admiten las orientaciones vertical y horizontal, independientemente de la pantalla el tamaño del panel o el modo de renderización en ventanas.

La configuración del manifiesto de screenOrientation restringe la orientación de la actividad.

✓ Acción

Elimina la configuración screenOrientation del manifiesto de tu app.

El bloqueo de la orientación de las apps no impide los cambios de tamaño de la ventana. Las aplicaciones son cambian de tamaño cuando entran al modo multiventana, cuando un dispositivo está plegado o desplegado, o cuando se cambia el tamaño de una ventana de formato libre. Tu app debe admitir cambios en la ventana sin importar la configuración del atributo screenOrientation.

✗ Evita las acciones

No restrinjas la orientación de la actividad. Las apps que bloquean la orientación tienen formato letterbox en dispositivos con pantallas grandes y tamaños de ventana incompatibles.

Las aplicaciones en formato letterbox están sujetas a una menor visibilidad en Google Play para tablets, plegables y dispositivos ChromeOS.

Relación de aspecto

Como el tamaño de la pantalla y la ventana varían, también lo hacen sus relaciones de aspecto, desde altura y de estrecho a cuadrado, a corto y ancho.

La configuración del manifiesto de minAspectRatio y maxAspectRatio restringe la relación de aspecto de tu app a valores hard-coded.

✓ Acción

Adapta tu app para que se ajuste a la pantalla independientemente de las dimensiones relativas.

Elimina las configuraciones minAspectRatio y maxAspectRatio de tu app . O bien, asegúrate de que se pueda cambiar el tamaño de tu app y que la relación de aspecto se encargue sola. (consulta la sección Capacidad de cambiar el tamaño).

✗ Evita las acciones

No intentes controlar las dimensiones relativas de tu app. Si tu app se ejecuta en un pantalla o en una ventana con una relación de aspecto incompatible con el de aspecto de la app, si está en formato letterbox

En Android 14 (nivel de API 34) y versiones posteriores, los usuarios pueden anular la relación de aspecto de la app para expandir las apps en formato letterbox y llenar el área de visualización disponible. Consulta Dispositivo modo de compatibilidad.

Tamaño de la ventana

La optimización de diseños para diferentes tamaños de visualización es la premisa central de y el diseño adaptable. Las apps adaptables se enfocan en el tamaño de la ventana de la app y no en el dispositivo. el tamaño de la pantalla. Cuando la app está en pantalla completa, la ventana de la app es la pantalla del dispositivo.

Las clases de tamaño de ventana proporcionan una forma sistemática de determinar y categorizar. el tamaño de la ventana de la app. Cambia los diseños como la ventana para adaptar tu app la clase de tamaño de la app.

✓ Acción

Evalúa el tamaño de la ventana de tu app en función de las clases de tamaño de ventana.

Para determinar la clase de tamaño de ventana, usa currentWindowAdaptiveInfo(). función de nivel superior de la biblioteca adaptable de Compose Material 3. Para ver más consulta Cómo compilar apps adaptables.

✗ Evita las acciones

No ignores la utilidad de las definiciones de clase de tamaño de ventana y la APIs integradas. No uses APIs obsoletas para calcular el tamaño de la ventana.

APIs obsoletas

Las APIs de la plataforma más antiguas no miden correctamente la ventana de la app. otras miden la pantalla del dispositivo; algunas excluyen la decoración del sistema.

✓ Acción

Usa WindowManager#getCurrentWindowMetrics() y WindowMetrics#getBounds() para obtener el tamaño de la ventana de la app. Usa WindowMetrics#getDensity() para obtener la densidad de visualización.

✗ Evita las acciones

No uses las siguientes APIs de Display obsoletas para determinar el tamaño de la ventana:

Compose

Jetpack Compose está diseñado para el desarrollo de IU adaptable. Sin XML ni diseño sin calificadores de recursos. Solo elementos sin estado y basados en Kotlin como Column, Row y Box, que describen tu IU, y los modificadores como offset, padding y size que agregan comportamiento a la IU o de terceros.

✓ Acción

Cómo compilar con Compose Mantente al tanto de las funciones y los lanzamientos más recientes.

✗ Evita las acciones

No confíes en tecnología desactualizada. No dejes que tu app se vuelva obsoleta.

Biblioteca adaptable de Compose Material 3

La biblioteca adaptable de Compose Material 3 proporciona componentes y APIs que que facilitan el desarrollo de apps adaptables.

✓ Acción

Usa las siguientes APIs para que tu app se adapte:

  • NavigationSuiteScaffold: Cambia entre la barra de navegación y un riel de navegación según la clase de tamaño de la ventana de la app.
  • ListDetailPaneScaffold: Implementa el diseño canónico de lista-detalles. Adapta el diseño al tamaño de la ventana de la app.
  • SupportingPaneScaffold: Implementa el panel complementario canónico .
✗ Evita las acciones

No es necesario reinventar la rueda. No te pierdas las mejoras en la productividad de los desarrolladores que ofrecen todas las bibliotecas de Jetpack Compose.

Diseños

Los usuarios esperan que las apps aprovechen al máximo el espacio de visualización disponible con la contenido o controles mejorados.

Las apps adaptables optimizan los diseños en función de los cambios en la pantalla, en particular, cambios en el tamaño de la ventana de la app o en la posición del dispositivo.

✓ Acción

Cambia los componentes de la IU a medida que cambia el tamaño de la ventana para aprovechar las funciones espacio de visualización. Por ejemplo, cambia la barra de navegación inferior que se usa en el modo compacto tamaños de ventana para un riel de navegación vertical en ventanas medianas y expandidas. Cambiar la posición de los diálogos para que sean accesibles en todas las pantallas

Organiza el contenido en paneles para habilitar diseños de varios paneles, como Lista-detalles y panel complementario para las pantallas de contenido dinámico.

✓ Acción: Actividades de lista y detalles organizadas en un diseño de panel doble.
✗ Evita las acciones

Si no usas paneles de contenido, no estires solo los elementos de la IU para que ocupen espacio de visualización disponible. Las líneas de texto largas son difíciles de leer. Estirado botones se ven mal diseñados. Si usas Modifier.fillMaxWidth, no y suponemos que ese es el comportamiento correcto para todos los tamaños de visualización.

✗ Lo que no debes hacer: El diseño se estira para llenar la ventana desplegable.

Dispositivos de entrada

Los usuarios no solo utilizan pantallas táctiles para interactuar con las aplicaciones.

Las apps adaptables admiten teclados, mouse y plumas stylus externos para brindar un una mejor experiencia del usuario y ayudar a los usuarios a ser más productivos en factores de forma de de todo tipo.

✓ Acción

Aprovecha la funcionalidad integrada del framework de Android para navegación por pestañas de teclado y clic, seleccionar y desplazarse con el mouse o el panel táctil. Publicar las combinaciones de teclas de tu app en el Asistente de combinaciones de teclas.

Usa la biblioteca de Material 3 de Jetpack para permitir que los usuarios escriban en cualquier TextField con una pluma stylus.

✗ Evita las acciones

No hagas que los métodos de entrada alternativos sean imposibles. No ingreses accesibilidad. problemas.

Resumen

  • Cómo compilar tu app con Compose y la biblioteca adaptable de Material 3
  • Diseños base en clases de tamaño de ventana
  • Cómo crear diseños multipanel
  • Crea una app de tamaño variable
  • Nunca bloquear la orientación de la actividad
  • No restringir la relación de aspecto
  • Compatibilidad con otra entrada que no sea táctil
  • Evita las APIs obsoletas

✓ Haz lo que esperan tus usuarios: optimizar tu app para la diversidad de dispositivos que las personas usan todos los días.

✗ No esperes. ¡Comienza hoy!