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.
- Exemplos e códigos podem ser encontrados em:
- 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.
- O código da classe de base está disponível em:
- 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
- O código está em:
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 usandoTheme.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 aonAttach(Context)
.