Padrões e componentes

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

Aqui está um resumo das melhorias:

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

Novos widgets:

  • Um widget de cabeçalho para detalhes do aplicativo. Exibe o ícone do aplicativo, o rótulo do aplicativo e outras informações.
  • Um botão de expansão em algumas páginas. A página pode começar como recolhida e ocultar itens menos importantes até que o usuário clique no botão expandir.
  • IU do seletor de aplicativos padrão:
    • A interface do usuário para escolher o navegador padrão, o aplicativo de telefone padrão etc.
    • Anteriormente uma caixa de diálogo, agora é uma interface do usuário baseada em botão de opção de tela cheia.
  • Uma preferência de estilo "MasterSwitch". Esta é uma preferência com dois alvos de clique. O destino esquerdo leva a um fragmento ou intenção de subconjunto. O alvo certo é um botão de alternância, controlando a ativação/desativação de toda a página.

Exemplos e fonte

  • 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 ThemeOverlay em:
      packages/apps/Settings/res/values/styles_preference.xml
  • Alteração do tema 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ência
    • Muitas páginas em Configurações agora estão usando o novo layout de preferência.
    • Você pode encontrar o código em:
      packages/apps/Settings/res/values/styles_preference.xml
  • Widget de cabeçalho do aplicativo
    • A maioria das páginas de informações do aplicativo em Configurações já está implementando o novo cabeçalho do aplicativo.
    • Exemplos e código podem ser encontrados em:
      packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java
  • Botão Expandir
    • Exemplos e código podem ser encontrados em:
      packages/apps/Settings/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java

      Observação: este componente deve ser usado junto com o DashboardFragment. (Veja mais detalhes sobre DashboardFragment em Updated Information Architecture .)

  • Seletor de aplicativos padrão
    • Você pode encontrar o código para a classe base em:
      packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
    • Existem várias subclasses de DefaultAppPickerFragment, cada uma implementando um seletor para uma intenção diferente.
  • Preferência de estilo MasterSwitch
    • O código está em: packages/apps/Settings/src/com/android/settings/widget/MasterSwitchPreference.java
    • Um exemplo de caso de uso é o switch mestre 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 imediatamente. Se os OEMs decidirem implementar uma nova preferência de estilo "MasterSwitch" ou seletor de aplicativos padrão, eles devem seguir os exemplos neste documento e os arquivos de referência (Javadoc) escritos com cada componente para obter mais detalhes.

Personalização

  • Comportamento do divisor. Para alterar como o divisor é desenhado, atualize o estilo dos divisores de configurações e altere o valor para o seguinte:
    • allowDividerAcima
    • allowDividerAbaixo
    • allowDividerAfterLastItem
  • Cor do tema ActionBar. As atividades devem usar Theme.DeviceDefault.Settings como tema ou criar um tema personalizado usando Theme.DeviceDefault.Settings como pai.
  • Widget de cabeçalho do aplicativo. Use setters em AppHeaderController para personalizar cada campo e chame build() assim que todos os campos estiverem definidos.
  • Botão Expandir:
    • Para desabilitar totalmente a funcionalidade, substitua o construtor por 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.