Únete a ⁠ #Android11: The Beta Launch Show el 3 de junio.

Administración de ventanas

En esta página, se describe el administrador de ventanas del Sistema operativo Chrome.

El administrador de ventanas del Sistema operativo Chrome

Las apps para Android se agrupan en las siguientes categorías:

Nivel de API Comportamiento del administrador de ventanas
Android 1.5 (API nivel 3) y versiones anteriores Estas apps siempre se muestran en pantalla completa.
Android 1.6 (API nivel 6) a Android 6.0 (API nivel 23) Se considera que no es seguro cambiar el tamaño de estas apps. Si es posible, estas se inician de manera predeterminada en una ventana vertical del tamaño de un teléfono; de lo contrario, se inician en una ventana horizontal del tamaño de un teléfono. El usuario puede presionar F4 para ingresar al modo de pantalla completa (o salir), lo que reinicia por completo la app (se cierra y se inicia nuevamente) y la mantiene desde entonces en pantalla completa en tamaño vertical (o girada en horizontal).
Android 7.0 (API nivel 24) con posibilidad de cambiar el tamaño Este es el valor predeterminado de Android 7.0: Las apps pueden cambiar de tamaño sin reiniciarse. Generalmente, estas apps se inician maximizadas de manera predeterminada. Las Chromebooks versión M60 y anteriores inician ventanas de tamaño vertical de forma predeterminada en el tamaño del teléfono (Nexus 5X).
Android 7.0 (API nivel 24) sin posibilidad de cambiar el tamaño Una aplicación especifica android:resizeableActivity="false" y evita que se modifique su tamaño. Sin embargo, en algunas situaciones, es necesario cambiar el tamaño: cuando el usuario cambia el tamaño de la pantalla, cuando la actividad se encuentra sobre una actividad de tamaño variable o cuando la actividad cambia la orientación.
Android 7.0 (API nivel 24) controlado por la app La app solicita un tamaño de inicio especial.

Ten en cuenta que se recuerdan los estados de las apps, como maximizada o vinculada.

Reglas de la actividad raíz

Una ventana en las Chromebooks consiste en una pila de ventanas de actividad. Cada ventana de esta pila tiene el mismo tamaño y orientación.

Para evitar cambios bruscos de orientación y tamaño, que son confusos para el usuario en un entorno de escritorio, el administrador de ventanas de las Chromebooks hace lo mismo que el administrador de ventanas de Android cuando se usa el modo de lado a lado:

  • La actividad de la parte inferior de la pila dicta los atributos de todas las actividades anteriores. Esto puede llevar a situaciones inesperadas en las que una actividad recién iniciada, cuyo tamaño no se puede cambiar y está en modo vertical, se convierta al modo horizontal cuyo tamaño se puede cambiar.

El modo del dispositivo tiene un efecto aquí: En el modo de tablet, la orientación no está bloqueada y cada orientación dicta su propia orientación, como es normal en Android. Sin embargo, el tamaño de la app se bloquea si la actividad se orienta a Android 6.0 (API nivel 23) o inferior.

Orientación

La orientación más común es la vertical, ya que los teléfonos se sostienen principalmente de esta manera. Este modo es bueno para teléfonos, pero terrible para laptops. Por otro lado, el modo horizontal es bueno para laptops y tablets. Con el objetivo de obtener los mejores resultados para tu app con un administrador de ventanas, deberías admitir ambas orientaciones.

Algunas apps para Android suponen que cuando un dispositivo se mantiene en modo vertical, el valor de rotación siempre es Surface.ROTATION_0. Esto puede ser cierto para la mayoría de los dispositivos Android. Sin embargo, cuando la app se encuentra en un determinado modo de ARC, es posible que el valor de rotación de la orientación vertical no sea Surface.ROTATION_0.

Para obtener un valor de rotación preciso mientras se lee el acelerómetro o sensores similares, usa el método Display.getRotation() para intercambiar el eje según corresponda. Para obtener más información sobre cómo configurar la orientación, descarga la app de ejemplo AccelerometerPlay.

Si solo admites una, agrega la información al manifiesto para que el administrador de ventanas sepa sobre esto antes de iniciar la aplicación. Cuando especifiques una orientación, asegúrate de especificar las orientaciones de los sensores cuando sea posible, ya que las Chromebooks a menudo son convertibles y las apps al revés son molestas. No cambies la orientación seleccionada y, sobre todo, evita solicitar una orientación en el manifiesto y, luego, establecer otra orientación programática más tarde. Si cambias la orientación en función del tamaño de la ventana, es posible que te quedes atascado en una ventana pequeña de tamaño vertical y el usuario no pueda volver a entrar a una ventana horizontal grande.

Tamaño de lanzamiento

Las apps pueden cambiar su tamaño de lanzamiento de alguna de las siguientes formas:

  • Usa un tamaño de lanzamiento solo en entornos de escritorio, lo que ayuda al administrador de ventanas a darte los límites y la orientación adecuados. Para indicar una preferencia cuando se usa en modo escritorio, agrega las siguientes metaetiquetas dentro de la etiqueta <application>:

    <meta-data android:name="WindowManagerPreference:FreeformWindowSize"
                   android:value="[phone|tablet|maximize]" />
        <meta-data android:name="WindowManagerPreference:FreeformWindowOrientation"
                   android:value="[portrait|landscape]" />
        
  • Usa límites de lanzamiento estáticos. Usa <layout> dentro de la entrada de manifiesto de tu actividad para especificar un tamaño inicial "fijo". Observa este ejemplo:

    <layout android:defaultHeight="500dp"
                android:defaultWidth="600dp"
                android:gravity="top|end"
                android:minHeight="450dp"
                android:minWidth="300dp" />
        
  • Usa límites de lanzamiento dinámicos. Una actividad puede crear y usar ActivityOptions.setLaunchBounds(Rect) en la creación de una nueva actividad. Al especificar un rectángulo vacío, tu app se puede maximizar.

Pantalla completa

Funciona de la misma manera que en Android: Si la ventana no cubre la pantalla completa, se ignoran las solicitudes de uso de pantalla completa (que oculta toda la IU del sistema). Cuando se maximiza la app, se aplican los métodos/diseños/funciones normales para acceder al modo de pantalla completa. De esta manera, desaparece la IU del sistema (la barra de control de la ventana y la biblioteca).