Ofereça suporte a janelas de área de trabalho

O janelamento para computadores permite que os usuários executem vários apps ao mesmo tempo em tamanho redimensionável janelas de apps para uma experiência versátil, semelhante à área de trabalho.

Na Figura 1, é possível ver a organização da tela com janelas da área de trabalho. ativado. Observações:

  • Os usuários podem executar vários apps lado a lado simultaneamente.
  • A barra de tarefas está em uma posição fixa na parte de baixo da tela, mostrando os apps em execução. Os usuários podem fixar apps para ter acesso rápido.
  • A nova barra de cabeçalho personalizável decora a parte superior de cada janela com controles como minimizar e maximizar.
Figura 1. Janelamento da área de trabalho em um tablet.

Por padrão, os apps são abertos em tela cheia em tablets Android. Para iniciar um app em janelas do computador, toque e mantenha pressionada a alça da janela no na parte de cima da tela e arraste a alça dentro dela, como mostrado na Figura 2.

Quando um app é aberto na janela do computador, outros apps também são abertos em janelas do computador.

Figura 2. Toque, pressione e arraste a alça da janela do app para entrar no modo de janela da área de trabalho.

Os usuários também podem invocar a janela da área de trabalho no menu que aparece abaixo do gerenciador de janelas quando você toca ou clica nele ou usa o atalho de teclado Tecla Meta (Windows, Command ou Search) + Ctrl + para baixo.

Os usuários saem do modo de janela da área de trabalho fechando todas as janelas ativas ou pegando a alça da janela na parte de cima de uma janela da área de trabalho e arrastando o app para a parte de cima da tela. O atalho de teclado Meta + H também sai da janela do computador e executa os apps em tela cheia novamente.

Para voltar à janela da área de trabalho, toque ou clique no bloco da área de trabalho no Tela "Recentes".

Modo de redimensionamento e compatibilidade

No janelamento para computadores, os apps com orientação bloqueada são redimensionáveis livremente. Isso significa que, mesmo que uma atividade esteja bloqueada para a orientação de retrato, os usuários ainda podem redimensionar o app para uma janela de orientação de paisagem.

Figura 3. Redimensionar a janela de um app restrito a retrato para paisagem.

Os apps declarados como não redimensionáveis (ou seja, resizableActivity = false) têm a interface dimensionada mantendo a mesma proporção.

Figura 4. A interface de um app não redimensionável é dimensionada conforme a janela é redimensionada.

Os apps de câmera que bloqueiam a orientação ou são declarados como não redimensionáveis têm um tratamento especial para os visores da câmera: a janela é totalmente redimensionável, mas o visor mantém a mesma proporção. Ao presumir que os apps sempre são executados no modo retrato ou paisagem, os apps fixam no código ou deixam suposições que levam a erros de cálculo da visualização ou da imagem capturada orientação ou proporção resultando em imagens esticadas, de lado ou de cabeça para baixo.

Até que os apps estejam prontos para implementar visores de câmera totalmente responsivos, o tratamento especial oferece uma experiência do usuário mais básica que mitiga os efeitos de suposições erradas.

Para saber mais sobre o modo de compatibilidade para apps de câmera, consulte Modo de compatibilidade do dispositivo:

Figura 5. O visor da câmera mantém a proporção enquanto a janela é redimensionada.

Encartes de cabeçalho personalizáveis

Todos os aplicativos em execução no janelamento para computador têm uma barra de cabeçalho, mesmo modo imersivo.
Verifique se o conteúdo do seu app não está sobreposto pela barra de cabeçalho. A barra de cabeçalho é um tipo de encarte da barra de legenda: androidx.compose.foundation.layout.WindowInsets.Companion.captionBar(); em visualizações, WindowInsets.Type.captionBar(), que faz parte das barras do sistema.

Saiba mais sobre como processar insets em Mostrar conteúdo de ponta a ponta no app e processar insets de janela no Compose.

A barra de cabeçalho também é personalizável. O Android 15 introduziu o tipo de aparência APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND para tornar a barra de cabeçalho transparente para permitir que os apps desenhem conteúdo personalizado dentro dela na barra de cabeçalho.

Os apps se tornam responsáveis por estilizar a parte superior do conteúdo para se pareceriam com a barra de legenda (plano de fundo, conteúdo personalizado, entre outros) com o exceção dos elementos de legenda do sistema (botões fechar e maximizar), que são desenhadas pelo sistema na barra de legenda transparente na parte superior do aplicativo.

Os aplicativos podem alternar a aparência dos elementos do sistema dentro da legenda para os temas claro e escuro usando APPEARANCE_LIGHT_CAPTION_BARS, similar a como a barra de status e a barra de navegação são alternadas.

O Android 15 também introduziu WindowInsets#getBoundingRects() que permite que os apps analisem os encartes da barra de legenda com mais detalhes. Os apps podem diferenciar áreas em que o sistema desenha elementos do sistema e áreas não utilizadas em que os apps podem colocar conteúdo personalizado sem sobrepor elementos do sistema.

A lista de objetos Rect retornados pela API indica as regiões do sistema que devem ser evitadas. Qualquer espaço restante (calculado subtraindo os retângulos da barra de legenda Insets) é onde o app pode desenhar sem sobrepostos a elementos do sistema e com a capacidade de receber entradas.

Chrome antes e depois da implementação de cabeçalhos personalizados.
Figura 6. O Chrome antes e depois da implementação de cabeçalhos personalizados.

Suporte a várias instâncias e tarefas

A multitarefa é o núcleo da janela do computador e permitir várias instâncias do app pode aumentar muito a produtividade dos usuários.

O Android 15 apresenta a PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI, quais apps podem ser configurados para especificar que a interface do sistema deve ser mostrada para que o app permitir que ele seja iniciado como várias instâncias.

Gerenciar instâncias de apps com gestos de arrastar

No modo de várias janelas, os usuários podem iniciar uma nova instância de app arrastando uma visualização. fora da janela do app. Os usuários também podem mover elementos entre instâncias do mesmo app.

Figura 7. Inicie uma nova instância do Chrome arrastando uma guia para fora da janela da área de trabalho.

O Android 15 apresenta duas flags para personalizar o comportamento de arrastar e soltar:

  • DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG: Indica que uma ação de arrastar não processada precisa ser delegada ao sistema para ser iniciada se nenhuma janela visível processa a ação de soltar. Ao usar essa flag, o autor da chamada precisa fornecer ClipData com um Item que contenha um IntentSender imutável para uma atividade a ser iniciada (consulte ClipData.Item.Builder#setIntentSender()). O sistema pode iniciar a intent ou não com base em fatores como o tamanho da tela atual ou o modo de janela. Se o sistema não iniciar a intent, ela será cancelado pelo fluxo normal de arrastar e soltar.

  • DRAG_FLAG_GLOBAL_SAME_APPLICATION: Indica que uma operação de arrastar pode cruzar os limites da janela (para várias instâncias do mesmo aplicativo).

    Quando startDragAndDrop() é chamado com essa sinalização definida, somente janelas visíveis pertencentes ao mesmo possam participar da operação de arrastar e receber o conteúdo arrastado.

Figura 8. Mova uma guia entre duas instâncias do app Chrome.

Outras otimizações

Personalize inicializações de apps e faça a transição dos apps da janela da área de trabalho para a tela cheia.

Especificar o tamanho e a posição padrão

Nem todos os apps, mesmo que redimensionáveis, precisam de uma janela grande para oferecer valor ao usuário. Use o método ActivityOptions#setLaunchBounds() para especificar um tamanho e uma posição padrão quando uma atividade for iniciada.

Entrar no modo de tela cheia no espaço da área de trabalho

Os apps podem entrar no modo de tela cheia de forma programática chamando Activity#requestFullScreenMode(). O método coloca o app no modo de tela cheia diretamente da janela do computador.