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 .)
- Exemplos e código podem ser encontrados em:
- 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.
- Você pode encontrar o código para a classe base em:
- 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
- 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 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 usandoTheme.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étodoonAttach(Context)
do fragmento.