No Android 8.0, o menu "Configurações" ganhou vários componentes e widgets que abrangem usos comuns. Recomendamos que fabricantes de dispositivos e desenvolvedores usem os componentes comuns ao estender o app Configurações para que as novas interfaces de usuário permaneçam consistentes com a interface do app Configurações.
Confira um resumo das melhorias:
- Mudança no comportamento do divisor no framework de preferências da biblioteca de suporte. O divisor agora é exibido entre as categorias.
- Mudança de tema da ActionBar. A ActionBar agora usa o tema de cores claras, com texto de 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 e o rótulo do app, além de outras informações.
- Um botão de expansão em algumas páginas. A página pode começar contraída 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 uma caixa de diálogo, agora é uma interface baseada em botões de opção em tela cheia.
- 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 alvo à direita é um interruptor que controla 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 da ActionBar.
- O tema é definido em Theme.DeviceDefault.Settings
- Novo layout de preferências
- Muitas páginas nas 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 nas Configurações já está implementando o novo cabeçalho do app.
- Confira exemplos e códigos em:
packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java
- Botão "Abrir"
- Confira exemplos e códigos em:
packages/apps/Settings/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java
Observação:esse componente precisa ser usado com DashboardFragment. Confira mais detalhes sobre o DashboardFragment em Arquitetura de informações atualizada.
- Confira exemplos e códigos em:
- Seletor de apps padrão
- O código da classe base pode ser encontrado 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 base pode ser encontrado 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 é o roteador principal do 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 vão precisar seguir os exemplos deste documento e os arquivos de referência (Javadoc) criados com cada componente para mais detalhes.
Personalizar o menu de configurações
- Comportamento do divisor. Para mudar a forma como o divisor é desenhado, atualize o estilo dos divisores de configurações e
mude o valor para o seguinte:
allowDividerAbove
allowDividerBelow
allowDividerAfterLastItem
- Cor do tema da ActionBar. As atividades precisam usar
Theme.DeviceDefault.Settings
como tema ou criar um tema personalizado usandoTheme.DeviceDefault.Settings
como pai. - Widget de cabeçalho do app. Use setters no AppHeaderController para personalizar cada campo e chamar
build()
quando todos os campos estiverem definidos. - Botão "Abrir":
- Para desativar totalmente a funcionalidade, substitua o construtor de ProgressiveDisclosureMixin e defina keepExpanded como verdadeiro.
- Para personalizar quantos itens mostrar inicialmente, chame o
método
ProgressiveDisclosureMixin.setTileLimit()
durante o métodoonAttach(Context)
do fragmento.