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.javaObservação:esse componente precisa ser usado com DashboardFragment. Para mais detalhes sobre DashboardFragment, consulte Arquitetura de informações atualizada.
- Exemplos e códigos podem ser encontrados em:
- 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.
- Você encontra o código da classe base em:
- 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
- O código está em:
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:
allowDividerAboveallowDividerBelowallowDividerAfterLastItem
- Cor do tema da ActionBar. As atividades precisam usar
Theme.DeviceDefault.Settingscomo tema ou criar um tema personalizado usandoTheme.DeviceDefault.Settingscomo 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étodoonAttach(Context)do fragmento.