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 IU 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.
  • Mudança de tema do ActionBar. O ActionBar agora usa um 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 recolhida e ocultar itens menos importantes até que o usuário clique no botão de expansão.
  • IU do seletor de aplicativos padrão:
    • A IU para escolher o navegador padrão, o aplicativo de telefone padrão, etc.
    • Anteriormente uma caixa de diálogo, agora é uma interface de usuário baseada em botão de opção em tela cheia.
  • Uma preferência de estilo "MasterSwitch". Esta é uma preferência com dois alvos de clique. O alvo 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 foram modificadas para usar o novo comportamento do divisor.
    • O comportamento do divisor é definido como ThemeOverlay em:
      packages/apps/Settings/res/values/styles_preference.xml
  • Mudança de tema 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 agora usam 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

      Nota: Este componente deve ser usado em conjunto com DashboardFragment. (Veja mais detalhes sobre DashboardFragment em Arquitetura de Informação Atualizada .)

  • Seletor de aplicativos padrão
    • Você pode encontrar o código da 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 intenções diferentes.
  • 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 é o switch primário 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 seletor de aplicativo padrão, eles deverão 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 a forma como o divisor é desenhado, atualize o estilo dos divisores de Configurações e altere o valor para o seguinte:
    • permitirDividerAbove
    • permitirDividerAbaixo
    • permitirDividerAfterLastItem
  • 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 de ProgressiveDisclosureMixin e defina keepExpanded como true.
    • Para personalizar quantos itens serão exibidos inicialmente, chame o método ProgressiveDisclosureMixin.setTileLimit() durante o método onAttach(Context) do fragmento.