Qualificadores de recursos no Surface Duo

Em dispositivos de tela dupla, os layouts de aplicativo não devem ocultar conteúdo sob a dobradiça. Se o aplicativo carregar layouts e outros recursos usando nomes de pastas qualificados, você poderá fazer isso criando configurações especiais para dispositivos Surface Duo. O Android fornece qualificadores para gerenciar várias configurações; portanto, se o seu aplicativo estiver sendo executado em um dispositivo com uma tela pequena, um tablet com tela de 10 polegadas ou o Surface Duo, você poderá usar valores de qualificador para otimizar seu aplicativo em diferentes dispositivos.

Os qualificadores de recursos corresponderão a qualquer dispositivo com as características fornecidas, portanto, embora os valores mostrados abaixo correspondam ao Surface Duo e ao Surface Duo 2, é possível que agora (ou no futuro) eles também possam corresponder a outros dispositivos. Tente testar no maior número possível de dispositivos reais, especialmente aqueles com tamanhos de tela e taxas de proporções semelhantes, para verificar se os recursos são carregados conforme o esperado.

Carregar recursos específicos do dispositivo

Como o Surface Duo e o Surface Duo 2 têm dimensões de tela diferentes, é possível usar qualificadores de recursos para carregar recursos diferentes em cada modelo:

Dispositivo Qualificador de recursos específico do dispositivo
Surface Duo sw696dp-2784×1740
Surface Duo 2 sw732dp-2754×1832

Esses qualificadores correspondem exatamente às dimensões de cada dispositivo, para evitar a correspondência com outros hardwares o máximo possível. Se nenhum recurso específico estiver disponível, o Surface Duo aplicará os qualificadores existentes em ordem de precedência.

Os nomes comuns do diretório de recursos de cada dispositivo são mostrados abaixo:

Surface Duo

  • drawable-sw696dp-2784×1740 – para imagens
  • layout-sw696dp-2784×1740 – para arquivos XML de layout
  • values-sw696dp-2784×1740 – para valores de recurso, como arquivos strings.xml

Surface Duo 2

  • drawable-sw732dp-2754×1832 – para imagens
  • layout-sw732dp-2754×1832 – para arquivos XML de layout
  • values-sw732dp-2754×1832 – para valores de recurso, como arquivos strings.xml

Você pode evitar a duplicação usando recursos de alias para referenciar itens de ambos os dispositivos.

Usar um qualificador de recurso

Você também pode usar um qualificador de recurso sw696dp-2754×1740 para corresponder aos dois dispositivos. Esse valor combina os valores comuns máximos dos dois dispositivos. Você deve testar se ele é resolvido corretamente em todos os seus dispositivos de destino.

Aviso

Muitos aplicativos usam sw720dp ou sw732dp para fornecer recursos de tablet separados dos layouts do telefone. Se o aplicativo usar um diretório de largura menor correspondente em alguns recursos, isso será resolvido antessw696dp-2754×1740 e todos os recursos específicos do Surface Duo não serão carregados.

Exceto por combinações muito simples de qualificadores de recursos, é mais confiável usar os qualificadores de recursos separados em cada dispositivo Surface Duo, conforme mostrado no início desta página.

Como os qualificadores são construídos

Os qualificadores de recursos são criados acrescentando configurações ao nome de uma pasta de recurso. Desde que sigam as convenções de nomenclatura adequadas, vários qualificadores podem ser adicionados à mesma pasta usando traços.

As dimensões do Surface Duo indicam que o dispositivo no modo paisagem duplicada tem uma largura mínima de 720dp no Surface Duo e 756dp no Surface Duo 2. Esse valor não é alterado quando a orientação da tela muda, portanto, ele permanece constante, tanto no modo retrato duplo quanto no modo paisagem duplicada. Como a barra de status reduz a área de tela disponível para aplicativos, subtraia 24dp para obter o menor valor de largura correto: sw696dp para Surface Duo e sw732dp para Surface Duo 2.

Especificar a menor largura limitará o número de dispositivos que carregarão esses recursos, mas muitos tablets serão incluídos. Os recursos podem ser ainda mais restritos especificando as dimensões de tela. Ao adicionar 2784x1740 para o Surface Duo ou 2754×1832 para o Surface Duo 2 ao qualificador de recursos, os recursos só serão carregados quando as menores correspondências de largura e as dimensões de tela forem pelo menos iguais ao tamanho de pixel especificado.

Observação

A codificação de recursos em valores específicos pode ter consequências indesejadas; se um novo dispositivo for exibido com o mesmo tamanho de tela, ele também corresponderá ao qualificador. Planeje seus recursos adequadamente.

Largura mínima da tela no código

Também é possível verificar o valor da largura mínima da tela no códio usando o resources.configuration.smallestScreenWidthDp, que está disponível em um contexto de interface do usuário, como uma classe de atividade. Evite usar o valor de um contexto que não pertence à interface do usuário (por exemplo, do aplicativo) e evite armazenar o valor em cache, pois ele pode mudar em um dispositivo de tela dupla ou em outra situação em que o uso de várias janelas está habilitado e o aplicativo é iniciado ou movido para uma parte da tela em vez de usar a tela inteira.

Alterações do Android 10

No Android 11, a maneira como o Surface Duo corresponde ao qualificador de recursos foi alterada. Anteriormente, toda a dimensão da tela era usada para calcular os tamanhos da correspondência do qualificador de recursos, mas a partir do Android 11 a barra de navegação de 60 pixels é subtraída antes da correspondência.

Os seguintes valores tinham suporte anteriormente no Surface Duo em execução no Android 10:

  • values-sw720dp-2754×1800 – para valores de recurso
  • layout-sw720dp-2754×1800 – Para arquivos XML de layout

Aviso

As pastas sw720dp-2754×1800não têm mais suporte no Surface Duo em execução no Android 11 ou mais recente. Use os qualificadores de recursos especificados no início desta página.

Recursos