Ofereça suporte ao modo de várias janelas

O modo de várias janelas permite que vários apps fiquem abertos simultaneamente na mesma tela. Os apps podem ficar lado a lado ou um acima do outro (modo de tela dividida), um app em uma pequena janela sobreposta a outros apps (modo picture-in-picture) ou apps individuais em janelas móveis separadas e redimensionáveis (modo de janelas da área de trabalho).

Figura 1. Mostrar dois apps lado a lado no modo de tela dividida.

Para instruções de como acessar o modo de tela dividida em smartphones, acesse Ver dois apps ao mesmo tempo no smartphone Pixel.

Recursos de várias janelas específicos da versão

A experiência do usuário com várias janelas depende da versão do Android e do tipo de dispositivo:

  • O Android 7.0 (nível 24 da API) introduziu o modo de tela dividida em dispositivos de tela pequena e o modo picture-in-picture em dispositivos selecionados.

    • O modo de tela dividida preenche a tela com dois apps, mostrando um ao lado ou acima do outro. Os usuários podem arrastar o divisor que separa os dois apps para que um fique maior, e o outro, menor.

    • O modo picture-in-picture permite que os usuários continuem a reprodução de vídeo enquanto interagem com outro app (consulte Suporte a picture-in-picture).

    • O modo de janelas da área de trabalho, em que os usuários podem redimensionar livremente cada atividade, pode ser ativado por fabricantes de dispositivos com tela grande.

      Você pode configurar como seu app processa o modo de várias janelas especificando as dimensões mínimas permitidas para a atividade. Você também pode desativar o modo de várias janelas para o app configurando resizeableActivity="false" para garantir que o sistema sempre mostre o app em tela cheia.

  • O Android 8.0 (API de nível 26) leva o modo picture-in-picture para dispositivos com telas pequenas.

  • O Android 12 (nível 31 da API) torna o modo de várias janelas o comportamento padrão.

    • Em telas grandes (classe de tamanho de janela média ou expandida), a plataforma oferece suporte a todos os apps no modo de várias janelas, independente da configuração do app. Se resizeableActivity="false", o app será colocado no modo de compatibilidade quando necessário para acomodar as dimensões de exibição.

    • Em telas pequenas (classe de tamanho de janela compacta), o sistema verifica o minWidth e o minHeight de uma atividade para determinar se ela pode ser executada no modo de várias janelas. Se resizeableActivity="false", o app não poderá ser executado no modo de várias janelas, independente da largura e altura mínimas.

  • O Android 16 (nível 36 da API) substitui as restrições de orientação da tela, proporção da tela e redimensionamento.

    • Em telas grandes (menor largura >= 600 dp), o sistema ignora os atributos do manifesto e as APIs de tempo de execução usados para restringir a orientação, a proporção e o redimensionamento de um app, otimizando a experiência do usuário em todos os formatos de dispositivo.

      Para saber como excluir jogos das mudanças do Android 16, consulte as exceções de orientação, proporção e redimensionamento de apps.

Modo de tela dividida

Para ativar o modo de tela dividida, os usuários podem fazer o seguinte:

  1. Abra a tela "Recentes".
  2. Deslizar um app para vê-lo
  3. Pressionar o ícone do app na barra de título
  4. Selecionar a opção de menu "Tela dividida"
  5. Selecionar outro app na tela "Recentes" ou fechar essa tela e executar outro app

Os usuários saem do modo de tela dividida arrastando o divisor de janelas até a borda da tela (para cima/baixo, esquerda/direita).

Iniciar ao lado

Se o app precisar acessar conteúdo por uma intent, use FLAG_ACTIVITY_LAUNCH_ADJACENT para abrir o conteúdo em uma janela de tela dividida adjacente.

O FLAG_ACTIVITY_LAUNCH_ADJACENT foi introduzido no Android 7.0 (nível 24 da API) para permitir que apps executados no modo de tela dividida iniciem atividades na janela adjacente.

O Android 12L (nível 32 da API) e versões mais recentes estenderam a definição da flag para permitir que apps em tela cheia ativem o modo de tela dividida e iniciem atividades na janela adjacente.

Para iniciar uma atividade adjacente, use FLAG_ACTIVITY_LAUNCH_ADJACENT em conjunto com FLAG_ACTIVITY_NEW_TASK. Por exemplo:

fun openUrlInAdjacentWindow(url: String) {
    Intent(Intent.ACTION_VIEW).apply { data = Uri.parse(url)
       addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT or Intent.FLAG_ACTIVITY_NEW_TASK)
    }.also { intent -> startActivity(intent) }
}

Ciclo de vida da atividade no modo de várias janelas

O modo de várias janelas não muda o ciclo de vida da atividade. No entanto, o estado retomado dos apps em várias janelas varia de acordo com as diferentes versões do Android.

Retomada múltipla

O Android 10 (nível 29 da API) e versões mais recentes tem suporte à retomada múltipla. Todas as atividades permanecem no estado RESUMED quando o dispositivo está no modo de várias janelas Uma atividade poderá ser pausada se houver uma atividade transparente sobre ela ou se ela não for focalizável. Isso acontece, por exemplo, quando a atividade está no modo picture-in-picture. Também é possível que nenhuma atividade esteja em foco em um determinado momento, por exemplo, se a gaveta de notificações estiver aberta. O método onStop() funciona normalmente: ele é chamado sempre que uma atividade é retirada da tela.

O recurso de retomada múltipla também está disponível em alguns dispositivos com Android 9 (API de nível 28). Para ativar a retomada múltipla em dispositivos com o Android 9, adicione os seguintes metadados de manifesto:

<meta-data android:name="android.allow_multiple_resumed_activities" android:value="true" />

Para verificar se determinado dispositivo é compatível com esses metadados do manifesto, consulte as especificações do dispositivo.

Android 9

No modo de várias janelas no Android 9 (API de nível 28) e versões anteriores, somente a atividade com que o usuário interagiu mais recentemente fica ativa em determinado momento. Essa atividade é considerada a mais importante e é a única no estado RESUMED. Todas as outras atividades visíveis ficam no estado STARTED, mas não em RESUMED. No entanto, o sistema atribui a essas atividades visíveis, mas não retomadas, uma prioridade maior que a das atividades não visíveis. Se o usuário interagir com uma das atividades visíveis, ela será retomada, e a atividade que antes era a mais importante entrará no estado STARTED.

Quando houver várias atividades em um único processo de app ativo, a atividade com a ordem z mais alta será retomada e as outras serão pausadas.

Mudanças de configuração

Quando o usuário coloca um app no modo de várias janelas, o sistema notifica a atividade sobre uma mudança na configuração, como especificado em Gerenciar alterações de configuração. Isso também acontece quando o usuário redimensiona o app ou o coloca de volta no modo de tela cheia.

Essencialmente, essa mudança afeta o ciclo de vida da atividade da mesma forma que ocorre quando o sistema notifica o app sobre a mudança da orientação retrato para paisagem no dispositivo, exceto que as dimensões do app são modificadas, em vez de simplesmente trocadas. Sua atividade pode processar a mudança de configuração por conta própria ou seu app pode permitir que o sistema destrua a atividade e a recrie com as novas dimensões.

Se o usuário redimensionar uma janela e aumentar uma de suas dimensões, o sistema redimensionará a atividade para corresponder à ação do usuário e emitirá mudanças de configuração conforme necessário. Se o app demorar a desenhar nas áreas recém-expostas, o sistema preencherá temporariamente essas áreas com a cor especificada pelo atributo windowBackground ou pelo atributo padrão de estilo windowBackgroundFallback.

Acesso exclusivo a recursos

Para ajudar a oferecer suporte ao recurso de retomadas múltiplas, use o callback de ciclo de vida onTopResumedActivityChanged().

O callback é invocado quando uma atividade ganha ou perde a posição de principal atividade retomada, o que é importante quando uma atividade usa um recurso compartilhado de Singleton, como microfone ou câmera:

override fun onTopResumedActivityChanged(topResumed: Boolean) {
    if (topResumed) {
        // Top resumed activity.
        // Can be a signal to re-acquire exclusive resources.
    } else {
        // No longer the top resumed activity.
    }
}

Um app pode perder recursos por outros motivos, como a remoção de um hardware compartilhado.

Seja como for, é preciso que os apps tratem com eficiência os eventos e as mudanças de estado que afetam os recursos disponíveis.

Para apps que usam uma câmera, o CameraManager.AvailabilityCallback#onCameraAccessPrioritiesChanged() fornece uma dica de que pode ser um bom momento para tentar acessar a câmera. Esse método está disponível a partir do Android 10 (API de nível 29).

Lembre-se de que resizeableActivity=false não garante o acesso exclusivo à câmera, já que outros apps que usam a câmera podem ser abertos em outras telas.

Figura 2. Câmera no modo de várias janelas.

Seu app não precisa liberar a câmera quando perder o foco. Por exemplo, é possível continuar com a visualização da câmera enquanto o usuário interage com o app retomado que foi colocado em foco mais recentemente. O aplicativo poderá continuar executando a câmera quando não for o de retomada principal, mas precisará gerenciar o caso de desconexão corretamente. Quando o app de retomada principal quiser usar a câmera, ele poderá abri-la, e seu app perderá o acesso. Seu app poderá reabrir a câmera quando for colocado em foco novamente.

Depois que um app receber um callback CameraDevice.StateCallback#onDisconnected(), chamadas subsequentes na câmera do dispositivo vão gerar uma CameraAccessException.

Métricas de janela

O Android 11 (API de nível 30) introduziu os seguintes métodos WindowManager para fornecer os limites dos apps em execução no modo de várias janelas:

Os métodos computeCurrentWindowMetrics() e computeMaximumWindowMetrics() da biblioteca WindowManager do Jetpack oferecem funcionalidades semelhantes respectivamente, mas com compatibilidade com versões anteriores até o nível 14 da API.

Para ver métricas de outras telas além da atual, faça o seguinte (conforme mostrado no snippet de código):

  • Crie um contexto de exibição
  • Crie um contexto de janela para a tela
  • Encontre o WindowManager do contexto da janela
  • Encontre o WindowMetrics da área de exibição máxima disponível para o app

val windowMetrics = context.createDisplayContext(display)
                           .createWindowContext(WindowManager.LayoutParams.TYPE_APPLICATION, null)
                           .getSystemService(WindowManager::class.java)
                           .maximumWindowMetrics

Métodos obsoletos

Os métodos Display getSize() e getMetrics() foram descontinuados na API de nível 30 em favor dos novos métodos WindowManager.

No Android 12 (nível 31 da API), os métodos getRealSize() e getRealMetrics() da classe Display foram descontinuados, e o comportamento deles foi atualizado para corresponder melhor ao comportamento de getMaximumWindowMetrics().

Configuração do modo de várias janelas

Se o app for direcionado ao Android 7.0 (nível 24 da API) ou versões mais recentes, você poderá configurar como e se as atividades dele oferecem suporte ao modo de várias janelas. Você pode definir atributos no manifesto para controlar o tamanho e o layout. As configurações de atributos de uma atividade raiz se aplicam a todas as atividades na pilha de tarefas. Por exemplo, se a atividade raiz tiver android:resizeableActivity="true", todas as atividades na pilha de tarefas serão redimensionáveis. Em alguns dispositivos maiores, como Chromebooks, seu app pode ser executado em uma janela redimensionável, mesmo se você especificar android:resizeableActivity="false". Se isso corromper seu app, use filtros no Google Play para restringir a disponibilidade dele nesses dispositivos.

O Android 12 (API de nível 31) usa o modo de várias janelas por padrão. Em telas grandes (classes de tamanho de janela média ou expandida), todos os apps são executados no modo de várias janelas independente da configuração do app. Em telas pequenas, o sistema verifica as configurações de minWidth, minHeight e resizeableActivity de uma atividade para determinar se ela pode ser executada no modo de várias janelas.

resizeableActivity

Defina esse atributo no elemento <activity> ou <application> do manifesto para ativar ou desativar o modo de várias janelas no nível 30 da API ou anterior:

<application
  android:name=".MyActivity"
  android:resizeableActivity=["true" | "false"] />;

Se esse atributo for definido como true, a atividade poderá ser iniciada nos modos de tela dividida e de janelas da área de trabalho. Se o atributo for definido como false, a atividade não será compatível com o modo de várias janelas. Se o valor for "false", e o usuário tentar iniciar a atividade no modo de várias janelas, a atividade usará o modo de tela cheia.

Se o app for destinado à API de nível 24 ou mais recente, mas você não especificar um valor para esse atributo, ele será definido como "true".

Se o app for direcionado à API de nível 31 ou mais recente, esse atributo vai funcionar de forma diferente em telas pequenas e grandes:

  • Telas grandes (classe de tamanho de janela média ou expandida): todos os apps oferecem suporte ao modo de várias janelas. O atributo indica se uma atividade pode ser redimensionada. Se resizeableActivity="false", o app será colocado em modo de compatibilidade quando necessário para atender às dimensões de exibição.
  • Telas pequenas (classe de tamanho de janela compacta): se resizeableActivity="true" e a largura e altura mínimas da atividade estiverem dentro dos requisitos de várias janelas, a atividade vai oferecer suporte ao modo de várias janelas. Se resizeableActivity="false", a atividade não será compatível com o modo de várias janelas, independente da largura e altura mínimas da atividade.

Se o app for direcionado à API de nível 36 ou mais recente, esse atributo será ignorado em telas com largura mínima >= 600 dp. No entanto, o app respeita totalmente a escolha da proporção de tela do usuário (consulte Substituições por app do usuário).

Se você estiver criando um jogo, consulte Orientação, proporção e capacidade de redimensionamento do app para saber como excluir seu jogo das mudanças do Android 16 (nível 36 da API).

supportsPictureInPicture

Defina esse atributo no nó <activity> do manifesto para indicar se a atividade é compatível com o modo picture-in-picture.

<activity
  android:name=".MyActivity"
  android:supportsPictureInPicture=["true" | "false"] />

configChanges

Para processar mudanças de configuração de várias janelas, por exemplo, quando um usuário redimensiona uma janela, adicione o atributo android:configChanges ao nó <activity> do manifesto do app com pelo menos os seguintes valores:

<activity
  android:name=".MyActivity"
  android:configChanges="screenSize | smallestScreenSize
      | screenLayout | orientation" />

Depois de adicionar android:configChanges, sua atividade e seus fragmentos recebem um callback para onConfigurationChanged() em vez de serem destruídos e recriados. É possível, então, atualizar manualmente suas visualizações, recarregar recursos e realizar outras operações conforme necessário.

<layout>

No Android 7.0 (nível 24 da API) e versões mais recentes, o elemento de manifesto <layout> é compatível com vários atributos que afetam o comportamento de uma atividade no modo de várias janelas:

  • android:defaultHeight, android:defaultWidth: altura e largura padrão da atividade quando iniciada no modo de janelamento para computadores.

  • android:gravity: posicionamento inicial da atividade quando iniciada no modo de janelas da área de trabalho. Consulte a classe Gravity para conferir os valores adequados.

  • android:minHeight, android:minWidth: altura e largura mínimas para a atividade nos modos de tela dividida e janelas de computador. Se o usuário mover o divisor no modo de tela dividida para tornar uma atividade menor que o mínimo especificado, o sistema vai recortar a atividade para o tamanho que o usuário solicitar.

O código a seguir mostra como especificar um tamanho e um local padrão para a atividade, além do tamanho mínimo quando a atividade é exibida no modo de janelas da área de trabalho:

<activity android:name=".MyActivity">
    <layout android:defaultHeight="500dp"
          android:defaultWidth="600dp"
          android:gravity="top|end|..."
          android:minHeight="450dp"
          android:minWidth="300dp" />
</activity>

Modo de várias janelas no ambiente de execução

A partir do Android 7.0, o sistema oferece funcionalidade de compatibilidade com apps que podem ser executados no modo de várias janelas.

Recursos desativados no modo de várias janelas

No modo de várias janelas, o Android pode desativar ou ignorar recursos que não se aplicam a uma atividade que está compartilhando a tela do dispositivo com outros apps ou atividades.

Além disso, algumas opções de personalização de IU do sistema ficam desativadas. Por exemplo, os apps não podem ocultar a barra de status se estiverem sendo executados no modo de várias janelas. Consulte Controlar a visibilidade da interface do sistema.

O sistema ignora as mudanças no atributo android:screenOrientation.

Callbacks e consultas no modo de várias janelas

A classe Activity oferece os seguintes métodos para compatibilidade com o modo de várias janelas:

  • isInMultiWindowMode(): indica se a atividade está no modo de várias janelas.

  • isInPictureInPictureMode(): indica se a atividade está no modo picture-in-picture.

  • onMultiWindowModeChanged(): o sistema chama esse método sempre que a atividade entra ou sai do modo de várias janelas. O sistema transmite ao método o valor "true" se a atividade entrar no modo de várias janelas ou "false" se a atividade sair desse modo.

  • onPictureInPictureModeChanged(): o sistema chama esse método sempre que a atividade entra ou sai do modo picture-in-picture. O sistema transmite o valor "true" ao método se a atividade entrar no modo picture-in-picture ou "false" se ela sair desse modo.

A classe Fragment expõe versões de muitos desses métodos. Por exemplo, Fragment.onMultiWindowModeChanged().

Modo picture-in-picture

Para colocar uma atividade no modo picture-in-picture, chame enterPictureInPictureMode(). Esse método não terá efeito se o dispositivo não for compatível com o modo picture-in-picture. Para mais informações, consulte Adicionar vídeos usando picture-in-picture (PiP).

Novas atividades no modo de várias janelas

Quando você inicia uma nova atividade, pode indicar que ela será exibida adjacente à atual, se possível. Use a flag de intent FLAG_ACTIVITY_LAUNCH_ADJACENT, que instrui o sistema a tentar criar a nova atividade em uma janela adjacente. Assim, as duas atividades compartilham a tela. O sistema faz o possível para fazer isso, mas não é garantido que isso aconteça.

Se um dispositivo estiver no modo de janelas da área de trabalho e você iniciar uma nova atividade, poderá especificar as dimensões e o local na tela da nova atividade chamando ActivityOptions.setLaunchBounds(). O método não terá efeito se o dispositivo não estiver no modo de várias janelas.

Na API de nível 30 ou anterior, se você iniciar uma atividade em uma pilha de tarefas, a atividade substituirá a que está na tela, herdando todas as propriedades de várias janelas dela. Se você quiser iniciar a nova atividade como uma janela separada no modo de várias janelas, inicie-a em uma nova pilha de tarefas.

O Android 12 (API de nível 31) permite que os apps dividam a janela de tarefas de um app entre várias atividades. Para determinar como o app exibe as atividades (tela cheia, lado a lado ou empilhada), crie um arquivo de configuração XML ou faça chamadas da API WindowManager do Jetpack.

Arrastar e soltar

Os usuários podem arrastar e soltar dados de uma atividade para outra enquanto as duas atividades compartilham a tela. Antes do Android 7.0, os usuários só podiam arrastar e soltar dados em uma única atividade. Para adicionar rapidamente suporte à aceitação de conteúdo arrastado, consulte a API DropHelper. Para orientações abrangentes sobre o recurso de arrastar e soltar, consulte Ativar o recurso de arrastar e soltar.

Várias instâncias

Cada atividade raiz tem uma tarefa própria, que é exibida na própria janela. Para iniciar uma nova instância do seu app em uma janela separada, inicie novas atividades com a flag FLAG_ACTIVITY_NEW_TASK. Você pode combinar essa configuração com atributos de várias janelas para solicitar um local específico para a nova janela. Por exemplo, um app de compras pode mostrar várias janelas adjacentes para comparar produtos.

O Android 12 (nível 31 da API) e versões mais recentes permitem iniciar duas instâncias de uma atividade lado a lado na mesma janela de tarefas na incorporação de atividades.

Se você quiser permitir que os usuários iniciem outra instância do aplicativo no iniciador de apps ou na barra de tarefas, defina android:resizeableActivity="true" no manifesto da atividade de inicialização e não use um modo de inicialização que impeça várias instâncias. Por exemplo, uma atividade singleInstancePerTask pode ser instanciada várias vezes em tarefas diferentes quando FLAG_ACTIVITY_MULTIPLE_TASK ou FLAG_ACTIVITY_NEW_DOCUMENT é definido.

No Android 15 (nível 35 da API) e versões mais recentes, o PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI permite declarar suporte para várias instâncias. A propriedade é um sinal explícito para que a interface do sistema mostre controles ao usuário para criar várias instâncias do app. A propriedade é independente do modo de inicialização, mas só deve ser usada quando o modo de inicialização de uma atividade ou aplicativo for compatível com a propriedade, por exemplo, quando o modo de inicialização não for singleInstance.

Quando várias instâncias de um app estão em execução em janelas separadas em um dispositivo dobrável, uma ou mais instâncias podem ser enviadas para o segundo plano se a posição do dispositivo mudar. Por exemplo, suponha que um dispositivo não esteja dobrado e tenha duas instâncias de app em execução em janelas separadas em cada lado. Se o dispositivo estiver dobrado, uma das instâncias poderá ser encerrada em vez de tentar encaixar as janelas em ambas as instâncias em uma tela menor.

Verificação no modo de várias janelas

Mesmo que o app não seja destinado ao nível 24 da API ou mais recente, é importante verificar como ele se comporta no modo de várias janelas, porque um usuário pode tentar iniciá-lo nesse modo em um dispositivo com o Android 7.0 ou versão mais recente.

Testar dispositivos

Dispositivos com o Android 7.0 (nível 24 da API) ou versões mais recentes oferecem suporte ao modo de várias janelas.

Nível 23 da API ou anterior

Quando os usuários tentam usar o app no modo de várias janelas, o sistema força o redimensionamento do app, a menos que ele declare uma orientação fixa.

Se o app não declarar uma orientação fixa, inicie-o em um dispositivo com o Android 7.0 ou mais recente e tente colocar o app no modo de tela dividida. Verifique se a experiência do usuário é aceitável quando o app é redimensionado à força.

Se o app declarar uma orientação fixa, tente colocá-lo no modo de várias janelas. Ao fazer isso, verifique se ele continua no modo de tela cheia.

APIs de nível 24 ao 30

Se o app for direcionado a APIs de nível 24 ao 30 e não desativar o suporte ao modo de várias janelas, verifique o seguinte comportamento nos modos de tela dividida e janelas da área de trabalho:

  • Toque no botão Recentes e mantenha-o pressionado para iniciar o app em tela cheia e mudar para o modo de várias janelas. Verifique se o app alterna corretamente.

  • Inicie o app diretamente no modo de várias janelas e verifique se a inicialização ocorre da forma correta. Você pode iniciar um app no modo de várias janelas pressionando o botão Recentes e, em seguida, mantendo pressionada a barra de título do app e arrastando-o para uma das áreas destacadas na tela.

  • Para redimensionar o app no modo de tela dividida, arraste o divisor de tela. Verifique se o app é redimensionado sem falhar e se os elementos de IU necessários estão visíveis.

  • Se você especificou dimensões mínimas para o app, tente redimensioná-lo para que o tamanho da janela seja menor que essas dimensões. Verifique se não é possível redimensionar o app para um tamanho menor que o mínimo especificado.

  • Em todos os testes, verifique se o desempenho do app é aceitável. Por exemplo, verifique se há uma demora muito grande para atualizar a UI após o redimensionamento do app.

API de nível 31 ou mais recente

Se o app for direcionado ao nível 31 da API ou mais recente, e a largura e altura mínimas da atividade principal forem menores ou iguais às respectivas dimensões da área de exibição disponível, verifique todos os comportamentos listados para APIs de nível 24 ao 30.

Lista de verificação de teste

Para verificar o desempenho do app no modo de várias janelas, realize as operações a seguir. Tente executar essas operações nos modos de tela dividida e de janelas da área de trabalho, exceto quando houver instruções diferentes.

  • Entre e saia do modo de várias janelas.

  • Alterne do seu app para outro e verifique se ele se comporta corretamente enquanto visível, mas não ativo. Por exemplo, se o app estiver reproduzindo vídeo, verifique se a reprodução não é interrompida quando o usuário interage com outro app.

  • No modo de tela dividida, mova o divisor de tela para aumentar e reduzir o tamanho do app. Tente executar essas operações nas configurações lado a lado e um acima do outro. Verifique se o app não falha, se a funcionalidade essencial fica visível e se a operação de redimensionamento não demora demais.

  • Execute várias operações de redimensionamento em rápida sucessão. Verifique se o app não falha nem apresenta vazamentos de memória. O Memory Profiler do Android Studio oferece informações sobre o uso da memória do app. Consulte Inspecionar o uso de memória do seu app com o Memory Profiler.

  • Use o app normalmente em configurações diferentes de janela e verifique se ele se comporta corretamente. Verifique se o texto é legível e se os elementos da interface não ficam pequenos demais para a interação.

Suporte ao modo de várias janelas desativado

Nas APIs de nível 24 ao 30, se você desativou o suporte ao modo de várias janelas ao definir android:resizeableActivity="false", inicie o app em um dispositivo com o Android 7.0 a 11 e tente colocar esse app nos modos de tela dividida e janelas da área de trabalho. Ao fazer isso, verifique se ele continua no modo de tela cheia.

Outros recursos

Para mais informações sobre a compatibilidade com várias janelas no Android, consulte: