Padrões e componentes

No Android 8.0, o menu Configurações ganha vários componentes e widgets que e abordar os usos comuns. Os fabricantes e desenvolvedores de dispositivos são incentivados a usar o componentes comuns ao ampliar o app Configurações para que as novas interfaces do usuário permaneçam consistente com a UI de configurações atual.

Veja um resumo das melhorias:

  • Mudança de comportamento do divisor no framework de preferências da Biblioteca de Suporte. O divisor é desenhadas entre categorias.
  • Mudança de tema da ActionBar. A ActionBar agora usa o tema de cor clara, com texto de destaque.
  • Novo layout de preferência. O espaço para ícones permanece mesmo quando uma preferência não tem nenhum ícone.

Novos widgets:

  • Um widget de cabeçalho para detalhes do app. Mostra o ícone, o rótulo e outras informações.
  • Um botão de expansão em algumas páginas A página pode começar fechada e ocultar menos itens importantes até que o usuário clique 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.
  • Um "MasterSwitch" preferência de estilo. Esta é uma preferência com dois cliques de destino. O destino esquerdo leva a um fragmento ou intent de criação de subconjuntos. O alvo certo é um chave, ativando/desativando a página inteira.

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" foram modificadas para usar o novo tema ActionBar.
    • O tema é definido em Theme.DeviceDefault.Settings
  • Novo layout de preferência
    • 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 em "Configurações" já está implementando os novo cabeçalho 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 o DashboardFragment. Confira mais detalhes sobre o DashboardFragment em Arquitetura de informações atualizada.

  • Seletor de app padrão
    • O código da classe de base está disponível 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/+/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 um novo "MasterSwitch" preferência de estilo ou app padrão seletor, ele deve seguir os exemplos neste documento e os arquivos de referência (Javadoc) escrito com cada componente para mais detalhes.

Personalizar o menu de configurações

  • Comportamento do divisor. Para mudar o modo como o divisor é desenhado, atualize o estilo de Divisores de "Configurações" e altere o valor do seguinte:
    • allowDividerAbove
    • allowDividerBelow
    • allowDividerAfterLastItem
  • Cor do tema da ActionBar. As atividades precisam usar Theme.DeviceDefault.Settings como tema. crie um tema personalizado usando Theme.DeviceDefault.Settings como pai.
  • Widget de cabeçalho do app. Usar setters no AppHeaderController para personalizar cada campo e chamada build() quando todos os campos forem definidos.
  • Botão "Expandir":
    • Para desativar totalmente a funcionalidade, modifique o construtor para ProgressiveDevelopMixin e defina keepExpand como verdadeiro.
    • Para personalizar quantos itens serão mostrados inicialmente, chame o método O método ProgressiveDisclosureMixin.setTileLimit() durante a onAttach(Context).