Padrões e componentes

No Android 8.0, o menu "Configurações" tem vários componentes e widgets que abrangem usos comuns. Os fabricantes e desenvolvedores de dispositivos são incentivados a usar os componentes comuns ao estender o app Configurações para que as novas interfaces do usuário permaneçam consistentes com a interface das Configurações.

Veja um resumo das melhorias:

  • Mudança de comportamento do divisor no framework de preferências da Biblioteca de Suporte. O divisor agora é desenhado entre as categorias.
  • Mudança de tema da ActionBar. A ActionBar agora usa o tema de cor clara, com texto de cor de destaque.
  • Novo layout de preferência. O espaço para ícones permanece mesmo quando uma preferência não tem í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 como recolhida e ocultar itens menos importantes até o usuário clicar no botão de expansão.
  • Interface do seletor de apps padrão:
    • A interface para escolher o navegador padrão, o app de telefone padrão etc.
    • Antes uma caixa de diálogo, agora é uma IU baseada em um botão de opção em tela cheia.
  • Uma preferência de estilo "MasterSwitch". Essa é uma preferência com dois destinos de clique. O destino esquerdo leva a um fragmento ou intent de criação de subconjuntos. O destino à direita é um botão alternar, controlando a ativação/desativação para 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 do tema da ActionBar.
    • Todas as páginas em "Configurações" foram 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" estão usando o novo layout de preferências.
    • O código está disponível 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 nas 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 "Expandir"
    • 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 o DashboardFragment. Confira mais detalhes sobre o DashboardFragment em Arquitetura de informações atualizada.

  • Seletor de apps padrão
    • Você pode encontrar o código da classe de 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 diferentes intents.
  • 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 chave principal de Wi-Fi. Você pode encontrar 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 prontos para uso. Se os OEMs decidirem implementar uma nova preferência de estilo "MasterSwitch" ou um seletor de app padrão, eles precisarão seguir os exemplos neste documento e os arquivos de referência (Javadoc) criados com cada componente para mais detalhes.

Personalizar o menu de configurações

  • Comportamento do divisor. Para mudar o modo como o divisor é mostrado, atualize o estilo em 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 no AppHeaderController para personalizar cada campo e chame build() depois que todos os campos forem definidos.
  • Botão "Expandir":
    • Para desativar totalmente a funcionalidade, substitua o construtor para Progressive classeMixin e defina "keepExpandido" como verdadeiro.
    • Para personalizar quantos itens serão mostrados inicialmente, chame o método ProgressiveDisclosureMixin.setTileLimit() durante o método onAttach(Context) do fragmento.