Otimizar apps para o ChromeOS

Os apps Android desempenham um papel importante na redefinição da computação moderna como em telas grandes. Mas apenas executar o app para dispositivos móveis em um Chromebook não oferece aos usuários a melhor experiência.

Esta página detalha algumas maneiras de personalizar sua experiência para formatos de dispositivos conversíveis e laptops. Consulte nossa lista abrangente de testes para saber mais sobre como testar seu app para ter compatibilidade nesses dispositivos.

Usar a compatibilidade com o recurso "Várias janelas" em formato livre

A implementação de apps Android no ChromeOS inclui suporte básico para várias janelas. Em vez de sempre ocupar a tela inteira, o Android renderiza apps no ChromeOS em contêineres de janela de formato livre, o que é mais apropriado para esses dispositivos.

Os usuários podem redimensionar a janela que contém o app Android, conforme mostrado na figura 1. Para garantir que as janelas de formato livre sejam redimensionadas sem problemas e mostrem todo o conteúdo para o usuário, leia as diretrizes em Gerenciamento de janelas.

Figura 1. Uma janela redimensionável do app.

Você pode melhorar a experiência do usuário quando o app é executado no ChromeOS por meio destas práticas recomendadas:

Personalizar a cor da barra superior

O ChromeOS usa o tema do app para colorir a barra exibida na parte de cima, que aparece quando os usuários mantêm os controles da janela e o botão "Voltar" pressionados. Para que o app tenha uma aparência bem acabada e personalizada para o ChromeOS, defina colorPrimary e, se possível, colorPrimaryDark no tema do app.

colorPrimaryDark é usado para colorir a barra de cima. Se somente colorPrimary for definido, o ChromeOS usará uma versão mais escura dele na barra superior. Para saber mais, consulte Estilos e temas.

Compatibilidade com teclado, trackpad e mouse

Todos os Chromebooks têm um teclado físico e um trackpad, e alguns deles também têm tela touchscreen. Alguns laptops podem até virar tablets.

Nos apps para ChromeOS, ofereça suporte à entrada de mouse, trackpad e teclado para que o app possa ser usado sem tela touchscreen. Muitos apps já são compatíveis com mouse e trackpad sem a necessidade de trabalho extra. No entanto, é melhor personalizar o comportamento do seu app corretamente para o mouse. Além disso, ofereça compatibilidade e distinção entre entradas de mouse e de toque.

Verifique se:

  • É preciso que seja possível clicar em todos os itens com o mouse.
  • Todas as superfícies roláveis por toque também funcionam com eventos da roda do mouse, como mostrado na Figura 2.
  • Os estados da ação de passar o cursor foram implementados com bom senso para melhorar a descoberta da interface sem sobrecarregar o usuário, conforme mostrado na Figura 3.

Figura 2. Rolagem com a roda do mouse.

Figura 3. Estados de passagem do cursor sobre um botão.

Quando apropriado, diferencie as entradas do mouse e de toque. Por exemplo, tocar e pressionar um item pode acionar uma interface de seleção múltipla, mas clicar com o botão direito do mouse no mesmo item pode acionar um menu de opções.

Cursores personalizados

Personalize os cursores do mouse do app para indicar como os usuários podem interagir com os elementos da interface. Você pode definir o PointerIcon apropriado para uso quando os usuários interagem com um elemento aplicando o modificador pointerHoverIcon.

Nos seus apps, mostre o seguinte:

  • cursores de texto;
  • Alças de redimensionamento nas bordas das camadas redimensionáveis
  • Ponteiros de mão aberta e fechada para conteúdo que pode ser movimentado ou arrastado usando um gesto de clique e arrastar
  • Ícones de carregamento para processamento

A classe PointerIcon oferece constantes que podem ser usadas para implementar cursores personalizados.

Atalhos do teclado e navegação

Como todos os Chromebooks têm um teclado físico, disponibilize teclas de atalho para aumentar a produtividade dos usuários. Por exemplo, se o app for compatível com impressão, use Ctrl+P para abrir uma caixa de diálogo de impressão.

Da mesma forma, processe todos os elementos importantes da IU usando a navegação com a tecla Tab. Isso é especialmente importante para acessibilidade. Para atender aos padrões de acessibilidade, todas as superfícies da interface precisam ter estados óbvios e em conformidade com a acessibilidade, conforme mostrado nas figuras a seguir:

Figura 4. Tabulação transversal.

Figura 5. Substituição de um gesto de deslizar por um controle que aparece ao passar o cursor do mouse.

Implemente alternativas ao teclado ou ao mouse para os principais recursos ocultos em interações específicas por toque, como ações de tocar e pressionar, gestos de deslizar e outros gestos de vários toques. Um exemplo de solução é disponibilizar botões que aparecem em uma superfície ao passar o cursor.

Para mais informações sobre suporte a teclado, trackpad e mouse, consulte Compatibilidade de entrada em telas grandes.

Aprimorar ainda mais a entrada do usuário

Para atingir a funcionalidade para computador no seu app, considere estas outras entradas voltadas para a produtividade.

Menus de contexto

Os menus de contexto do Android, que são outro acelerador para levar os usuários aos recursos do app, podem ser acionados por um clique no botão secundário do mouse ou do trackpad ou por um toque e um toque longo em uma tela touchscreen:

Figura 6. Um menu de contexto exibido ao clicar com o botão direito do mouse.

Arrastar e soltar

Criar interações de arrastar e soltar, como a mostrada na figura a seguir, pode trazer funcionalidades de produtividade eficientes e intuitivas para seu app. Para mais informações, consulte Arrastar e soltar.

Figura 7. Arrastar e soltar em uma interface de árvore de arquivos.

Compatibilidade com stylus

A compatibilidade com a stylus é fundamental para apps de desenho e anotação. Ofereça compatibilidade avançada para Chromebooks e tablets equipados com stylus implementando interações adaptadas ao uso da entrada dessa caneta.

Tenha em mente as possíveis variações em diferentes hardwares da stylus ao projetar suas interações com ela. Para conferir um resumo das APIs da stylus, consulte Compatibilidade de entrada em telas grandes.

Tornar seus layouts responsivos

Faça bom uso do espaço da tela disponível para o app, independentemente do estado visual (tela cheia, retrato, paisagem ou janela). Confira alguns exemplos de bom uso do espaço:

  • Mostrar a arquitetura do app.
  • Limite o comprimento do texto e o tamanho da imagem a uma largura máxima.
  • Melhorar o uso do espaço em tela na barra de ferramentas do app.
  • Melhorar o posicionamento de recursos da IU adaptando o app ao uso do mouse em vez do polegar.
  • Otimizar o tamanho de vídeos e imagens, estabelecer um conjunto de largura e altura máximas para todas as mídias e melhorar a legibilidade.
  • Use classes de tamanho de janela e layouts de painel para implementar o design adaptável.
  • Remova ou reduza a importância dos componentes de rolagem horizontal.
  • Evite a IU modal de tela cheia. Use a interface inline, como indicadores de progresso e alertas, para todas as ações não críticas.
  • Use componentes de interface aprimorados, como seletores de hora e data, campos de texto e menus projetados para mouse, teclado e telas maiores.
  • Use edições inline, colunas adicionais ou a interface modal em vez de uma nova atividade para recursos de edição pequenos a médios.
  • Remover ou modificar botões de ação flutuante (FABs) para melhorar a navegação pelo teclado. Por padrão, um FAB é posicionado por último na ordem de tabulação transversal. Em vez disso, faça isso primeiro, porque é a ação principal, ou substitua por outra característica de nível superior.

Figura 8. Simulações de um layout responsivo em uma tela de smartphone e de tamanho de computador.

Um botão "Voltar" no nível do sistema é um padrão herdado das raízes portáteis do Android, que não se encaixa tão bem em um contexto de computador.

À medida que o app se torna cada vez mais personalizado para um ambiente de laptop, avance para um padrão de navegação que não enfatize o botão "Voltar". Deixe o app processar a própria pilha de histórico disponibilizando botões "Voltar", localização atual ou outras rotas alternativas no app, como botões para fechar ou cancelar, como parte da IU de tela grande.

Você pode definir se o app vai mostrar um botão "Voltar" na janela configurando uma preferência dentro da tag <activity>. A configuração de true oculta o botão "Voltar":

<meta-data android:name="WindowManagerPreference:SuppressWindowControlNavigationButton" android:value="true" />

Resolver problemas com imagens de visualização da câmera

Problemas de câmera podem surgir quando o app só pode ser executado na orientação retrato, mas o usuário o executa em uma tela no modo paisagem. Nesse caso, a visualização ou o resultado capturado pode ser girado incorretamente.

Para simplificar o desenvolvimento da câmera, use a biblioteca CameraX.

Para mais detalhes, consulte a explicação sobre os problemas de visualização da câmera.

Processar configurações do dispositivo

Considere as seguintes configurações de dispositivo para apps executados no ChromeOS.

Mudar volume

Os dispositivos ChromeOS têm volume fixo: os apps que emitem sons têm os próprios controles de volume. Siga as diretrizes para trabalhar com dispositivos de volume fixo.

Mudar o brilho da tela

Não é possível ajustar o brilho do dispositivo no ChromeOS. As chamadas para system settings e WindowManager.LayoutParams são ignoradas.