Ofereça suporte a várias janelas

No Android 7.0 e versões mais recentes, os dispositivos podem mostrar vários apps ao mesmo tempo usando o recurso de várias janelas. O Android oferece suporte a três configurações de várias janelas:

  • O Freeform permite que os usuários redimensionem dinamicamente os painéis de atividades e tenham mais de dois apps visíveis na tela.
  • A tela dividida é a implementação padrão de várias janelas, que oferece dois painéis de atividades em que os usuários podem colocar apps.
  • O recurso picture-in-picture (PIP) permite que dispositivos Android reproduzam conteúdo de vídeo em uma pequena janela enquanto o usuário interage com outros apps.

Implementação

O suporte a várias janelas é ativado por padrão no Android 7.0 e versões mais recentes. Para desativar, defina a flag config_supportsMultiWindow como false no arquivo config.xml do dispositivo.

O recurso de várias janelas está desativado por padrão em todos os dispositivos com pouca memória RAM (dispositivos que declaram ActivityManager.isLowRam()). Dispositivos com pouca memória RAM ignoram o valor da flag config_supportsMultiWindow.

Freeform

Depois de ativar o modo de várias janelas com a flag config_supportsMultiWindow, os fabricantes de dispositivos podem permitir o uso de janelas de forma livre. Esse modo é mais útil em dispositivos maiores, como tablets.

Para oferecer suporte ao modo de formato livre, ative o recurso do sistema PackageManager#FEATURE_FREEFORM_WINDOW_MANAGEMENT em /android/frameworks/base/core/java/android/content/pm/PackageManager.java e defina config_freeformWindowManagement como true em config.xml.

    <bool name="config_freeformWindowManagement">true</bool>
    

No Android 16, os OEMs podem oferecer suporte a janelas de área de trabalho no dispositivo para uma configuração de várias janelas de forma livre usando Ativar janelas de área de trabalho.

Ativar o modo de janela para computador

Siga estas etapas para ativar a janela de área de trabalho no seu dispositivo:

  • Confira se o dispositivo oferece suporte a janelas livres.
  • Defina a flag config_isDesktopModeSupported da sobreposição de configuração como true em config.xml:
        <bool name="config_isDesktopModeSupported">true</bool>
        
  • Para ativar o janelamento de forma livre na tela interna do dispositivo, defina a flag de sobreposição de configuração config_canInternalDisplayHostDesktops como true em config.xml. Essa flag será ignorada se config_isDesktopModeSupported for false:
          <bool name="config_canInternalDisplayHostDesktops">true</bool>
          
Ativar limites de tarefas

Siga estas etapas para configurar o número máximo de tarefas com suporte à janela do computador:

  1. Ative o modo janela para computador.
  2. Defina a flag de sobreposição de configuração config_maxDesktopWindowingActiveTasks em config.xml como o número máximo de tarefas com suporte. Para oferecer suporte a um número ilimitado de tarefas, defina a flag como o valor padrão de 0:
            <bool name="config_maxDesktopWindowingActiveTasks">4</integer>
            

Tela dividida

A experiência padrão do modo de várias janelas é a tela dividida, em que a interface do sistema é dividida no meio do dispositivo em modo retrato ou paisagem. Os usuários podem redimensionar a janela arrastando a linha divisória de um lado para o outro ou de cima para baixo, dependendo da orientação do dispositivo.

Depois de ativar a tela dividida, os fabricantes de dispositivos podem ativar o formato livre ou o PIP.

O Android 8.0 e versões mais recentes melhoram a tela dividida compactando a tela de início quando o usuário toca em Início. Para conferir detalhes de implementação, consulte Interações de tela dividida.

Picture-in-picture

Depois de ativar o modo de várias janelas com a flag config_supportsMultiWindow, os fabricantes de dispositivos podem oferecer suporte a picture-in-picture, que permite que os usuários assistam vídeos enquanto navegam por outras atividades. Embora esse recurso seja direcionado a dispositivos Android TV, outros tipos de dispositivos podem ser compatíveis com ele.

Para oferecer suporte ao PIP, ative o recurso do sistema PackageManager#FEATURE_PICTURE_IN_PICTURE em /android/frameworks/base/core/java/android/content/pm/PackageManager.java.

Para mais detalhes sobre a implementação do PIP em dispositivos com o Android 8.0 e versões mais recentes,consulte a página Picture-in-picture.

IU do sistema

Ofereça suporte a todas as interfaces do sistema padrão de acordo com a documentação para desenvolvedores sobre várias janelas.

Apps

Para oferecer suporte ao modo de várias janelas para apps pré-carregados, consulte a documentação para desenvolvedores do Android.

Validação

Para validar sua implementação de várias janelas, execute os testes CTS relacionados e siga as instruções de teste para várias janelas.

Versão do Android Teste CTS
7.0 /platform/cts/hostsidetests/services/activitymanager/src/android/server/cts
8.0 /platform/cts/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts
9.0 /platform/cts/tests/framework/base/activitymanager/src/android/server/am
10.0 e versões mais recentes /platform/cts/tests/framework/base/windowmanager/src/android/server/wm