supports studio example android android-manifest android-screen-support

example - responsive android studio



¿Dónde android.max_aspect meta marca la diferencia? (3)

Un blog reciente explica que debemos usar

<meta-data android:name="android.max_aspect" android:value="2.1" />

en el elemento <application> de AndroidManifest.xml para una visualización óptima en dispositivos de pantalla súper panorámica, por ejemplo, Samsung Galaxy S8.

Para probar esto, instalé mi aplicación (no max_aspect, no resizeableActivity flags; targetSdkVersion=22 , compileSdkVersion=24 ) en un Android 7.1.1. Emulador con resolución personalizada de 2960x1440. Todas las actividades, incluida la inmersiva, llenan la pantalla sin márgenes como se muestra en la publicación del blog.

Agregué explícito

<meta-data android:name="android.max_aspect" android:value="1.5" />

Y esto tampoco tuvo efecto en el emulador.

Entonces, la pregunta: ¿esta meta marca solo está marcada en los dispositivos reales o hay alguna configuración que no pude ver en mi emulador?

Actualización: traté de contactar a Neto Marin , el autor de la citada publicación del blog. Encontré un tweet orgulloso tweet sobre su contribución a la comunidad global de Android Dev, pero no pudo obtener una respuesta de él.


El android.max_aspect solo hace diferencia si tu android:resizeableActivity no es cierto. Si la API de destino de su aplicación es 24 o superior android: resizeableActivity se establece como verdadero.

Nota: no es necesario establecer una relación de aspecto máxima si el atributo android: resizeableActivity de una actividad está configurado como verdadero. Si su aplicación apunta al nivel de API 24 o superior, este atributo se establece de manera predeterminada en verdadero. Para obtener más información, consulte Configuración de su aplicación para el modo de ventanas múltiples.

Por favor, consulte la documentation .


El letterboxing ocurre en diferentes dispositivos, como Samsung S8, LG G6 , Pixel 2 XL y algunos otros. Parece ser parte de Android 8 y especialmente 8.1.

La definición oficial de compatibilidad de Android 8.1 incluye el siguiente párrafo:

[C-0-1] Las implementaciones de dispositivos con Configuration.uiMode establecido como UI_MODE_TYPE_NORMAL DEBEN tener un valor de relación de aspecto entre 1.3333 (4: 3) y 1.86 (aproximadamente 16: 9), a menos que la aplicación pueda considerarse como lista para estirarse más tiempo al cumplir una de las siguientes condiciones:

  • La aplicación ha declarado que admite una relación de aspecto de pantalla más grande a través del valor de metadatos de documentation .
  • La aplicación declara que puede cambiarse de tamaño a través del atributo android:resizeableActivity .
  • La aplicación está dirigida a un nivel de API 26 o superior y no declara un android:MaxAspectRatio que restringiría la relación de aspecto permitida.

Tenga en cuenta que los dos primeros atributos son a nivel de aplicación, mientras que el último atributo pertenece a Activity.

Algunos proveedores permiten al usuario final controlar esto aún más. LG tiene el menú "App Scaling" ; Samsung te permite elegir "aplicaciones de pantalla completa" en "Configuración de pantalla".


Tienes que configurar la relación de aspecto del emulador según tu necesidad.

Prueba estos pasos:

In Android Studio, open AVD Manager Create Virtual Device New Hardware Profile Set name: "18:9 aspect ratio screen" Set resolution: 1080 x 2160 Finish Select "18:9 aspect ratio screen" Next Select system image Nougat (API Level 25) Next AVD Name: "API Level 25 Nougat 18x9 aspect ratio screen" Finish

A continuación, ejecute en este emulador.

Si no establece un valor y android:resizeableActivity no es verdadero, entonces la relación de aspecto máxima se establece de manera predeterminada en 1.86 (aproximadamente 16: 9) y su aplicación no aprovechará el espacio de pantalla adicional.

No es necesario establecer una relación de aspecto máxima si el atributo android:resizeableActivity una actividad se establece en verdadero. Si su aplicación apunta al nivel de API 24 o superior, este atributo se establece de manera predeterminada en verdadero.