Padrões e componentes

No Android 8.0, o menu Config. ganhou vários componentes e widgets que abrangem os usos comuns. Incentivamos os fabricantes de dispositivos e desenvolvedores a usar os componentes comuns ao estender o app Configurações para que as novas interfaces de usuário permaneçam consistentes com a interface atual.

Confira um resumo das melhorias:

  • Mudança no comportamento do divisor na estrutura de preferências da biblioteca de suporte. O divisor agora é desenhado entre as categorias.
  • Mudança de tema da ActionBar. A ActionBar agora usa um tema de cores claras, com texto em cor de destaque.
  • Novo layout de preferências. O espaço para ícones permanece mesmo quando uma preferência não tem um ícone.

Novos widgets:

  • Um widget de cabeçalho para detalhes do app. Mostra o ícone, o rótulo e outras informações do app.
  • Um botão de expansão em algumas páginas. A página pode começar recolhida e ocultar itens menos importantes até que o usuário clique no botão de expansão.
  • Interface padrão do seletor de apps:
    • A interface para escolher o navegador padrão, o app de telefone padrão etc.
    • Antes era uma caixa de diálogo, agora é uma interface de tela cheia baseada em botões de opção.
  • Uma preferência de estilo "MasterSwitch". Essa é uma preferência com dois destinos de clique. O destino à esquerda leva a um fragmento ou intent de subconjunto. O destino à direita é uma alternância de interruptor, controlando a ativação/desativação de toda a página.

Exemplos e origem

  • Comportamento do divisor
    • Todas as páginas em "Configurações" são modificadas para usar o novo comportamento do divisor.
    • O comportamento do divisor é definido como um ThemeOverlay em:
      packages/apps/Settings/res/values/styles_preference.xml
  • Mudança de tema da ActionBar
    • Todas as páginas em "Configurações" são modificadas para usar o novo tema ActionBar.
    • O tema é definido em Theme.DeviceDefault.Settings
  • Novo layout de preferências
    • Muitas páginas em "Configurações" agora usam o novo layout de preferências.
    • Você pode encontrar o código em:
      packages/apps/Settings/res/values/styles_preference.xml
  • Widget de cabeçalho do app
    • A maioria das páginas de informações do app em "Configurações" já está implementando o novo cabeçalho do app.
    • Exemplos e códigos podem ser encontrados em:
      packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java
  • Botão "Abrir"
    • Exemplos e códigos podem ser encontrados em:
      packages/apps/Settings/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java

      Observação:esse componente precisa ser usado com DashboardFragment. Para mais detalhes sobre DashboardFragment, consulte Arquitetura de informações atualizada.

  • Seletor de apps padrão
    • Você encontra o código da classe base em:
      packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
    • Há várias subclasses de DefaultAppPickerFragment, cada uma implementando um seletor para uma intent diferente.
  • Preferência de estilo MasterSwitch
    • O código está em: https://cs.android.com/android/platform/superproject/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java
    • Um exemplo de caso de uso é a troca principal de Wi-Fi. Confira um exemplo em: packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java

Implementação

Os fabricantes de dispositivos podem começar a usar todos os novos componentes imediatamente. Se os OEMs decidirem implementar uma nova preferência de estilo "MasterSwitch" ou um seletor de apps padrão, eles precisam seguir os exemplos neste documento e os arquivos de referência (Javadoc) escritos com cada componente para mais detalhes.

Personalizar o menu de configurações

  • Comportamento do divisor. Para mudar como o divisor é desenhado, atualize o estilo dos divisores de configurações e mude o valor do seguinte:
    • allowDividerAbove
    • allowDividerBelow
    • allowDividerAfterLastItem
  • Cor do tema da ActionBar. As atividades precisam usar Theme.DeviceDefault.Settings como tema ou criar um tema personalizado usando Theme.DeviceDefault.Settings como pai.
  • Widget de cabeçalho do app. Use setters em AppHeaderController para personalizar cada campo e chame build() quando todos os campos estiverem definidos.
  • Botão "Abrir":
    • Para desativar totalmente a funcionalidade, substitua o construtor de ProgressiveDisclosureMixin e defina keepExpanded como "true".
    • Para personalizar quantos itens mostrar inicialmente, chame o método ProgressiveDisclosureMixin.setTileLimit() durante o método onAttach(Context) do fragmento.