O documento fornece instruções sobre como criar configurações para aplicativos Android usando as APIs Preference do Android. As principais informações incluem:
1) Como criar uma interface de configurações usando objetos Preference declarados em um arquivo XML em vez de views;
2) Os diferentes tipos de preferências como CheckBoxPreference, ListPreference e EditTextPreference;
3) Como agrupar preferências em categorias;
4) Como ler e definir valores de preferência usando SharedPreferences.
Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)Erisvaldo Junior
O documento discute o uso do BackupManager no Android para armazenar dados na nuvem sem necessidade de banco de dados externo. Explica como usar o BackupManager com SharedPreferences para armazenar configurações e informações simples na nuvem e garantir que os dados não sejam perdidos mesmo após reinstalação do aplicativo. Também aborda brevemente o uso de banco de dados SQLite no Android.
O documento descreve os principais comandos da linguagem SQL para manipular bancos de dados, incluindo a criação de tabelas e variáveis, inserção, alteração e remoção de dados, e resumindo os tipos de dados como varchar, date e datetime.
O documento descreve o I Encontro do PHPSP sobre o framework Zend. Ele apresenta os objetivos do encontro que são discutir a arquitetura e componentes do Zend Framework e boas práticas de desenvolvimento. Também resume os principais conceitos e componentes do framework como MVC, models, views, controllers, autenticação e autorização.
O documento define os principais componentes de uma DTD (Document Type Definition): 1) a DTD define a estrutura de documentos XML e permite validar sua correção; 2) a DTD contém declarações de elementos, atributos, entidades e notações que especificam os blocos, propriedades e formatos permitidos no documento.
1) O documento discute frameworks para geração de relatórios em Java, destacando o JasperReports e iReport.
2) JasperReports é um framework open source para geração de relatórios em Java, enquanto o iReport facilita a criação de layouts de relatórios usando o JasperReports.
3) O documento explica conceitos como campos, parâmetros, variáveis, expressões e seções em relatórios do JasperReports.
O documento detalha elementos do Delphi, como eventos, componentes e suas propriedades. Eventos podem ser do tipo mouse, teclado ou sistema. Componentes comuns incluem botões, caixas de edição, rótulos e memorandos. Propriedades controlam o comportamento e aparência desses componentes.
Desenvolvimento de Apps e Games para Android - Parte 6Erisvaldo Junior
O documento discute o uso do BackupManager para armazenar dados em nuvem, como SharedPreferences, e fornece um exemplo de como implementá-lo. Também aborda o uso do SQLiteOpenHelper para criar e gerenciar bancos de dados SQLite em apps Android.
Este documento apresenta uma aula sobre PHP com MySQL e PostgreSQL. Ele revisa conceitos básicos de PHP como tipos de dados, variáveis, estruturas de controle e funções. Também introduz HTML e CSS para estruturação e formatação de páginas web. Por fim, explica como construir formulários usando tags como <form>, <input>, <select> e <textarea>.
Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)Erisvaldo Junior
O documento discute o uso do BackupManager no Android para armazenar dados na nuvem sem necessidade de banco de dados externo. Explica como usar o BackupManager com SharedPreferences para armazenar configurações e informações simples na nuvem e garantir que os dados não sejam perdidos mesmo após reinstalação do aplicativo. Também aborda brevemente o uso de banco de dados SQLite no Android.
O documento descreve os principais comandos da linguagem SQL para manipular bancos de dados, incluindo a criação de tabelas e variáveis, inserção, alteração e remoção de dados, e resumindo os tipos de dados como varchar, date e datetime.
O documento descreve o I Encontro do PHPSP sobre o framework Zend. Ele apresenta os objetivos do encontro que são discutir a arquitetura e componentes do Zend Framework e boas práticas de desenvolvimento. Também resume os principais conceitos e componentes do framework como MVC, models, views, controllers, autenticação e autorização.
O documento define os principais componentes de uma DTD (Document Type Definition): 1) a DTD define a estrutura de documentos XML e permite validar sua correção; 2) a DTD contém declarações de elementos, atributos, entidades e notações que especificam os blocos, propriedades e formatos permitidos no documento.
1) O documento discute frameworks para geração de relatórios em Java, destacando o JasperReports e iReport.
2) JasperReports é um framework open source para geração de relatórios em Java, enquanto o iReport facilita a criação de layouts de relatórios usando o JasperReports.
3) O documento explica conceitos como campos, parâmetros, variáveis, expressões e seções em relatórios do JasperReports.
O documento detalha elementos do Delphi, como eventos, componentes e suas propriedades. Eventos podem ser do tipo mouse, teclado ou sistema. Componentes comuns incluem botões, caixas de edição, rótulos e memorandos. Propriedades controlam o comportamento e aparência desses componentes.
Desenvolvimento de Apps e Games para Android - Parte 6Erisvaldo Junior
O documento discute o uso do BackupManager para armazenar dados em nuvem, como SharedPreferences, e fornece um exemplo de como implementá-lo. Também aborda o uso do SQLiteOpenHelper para criar e gerenciar bancos de dados SQLite em apps Android.
Este documento apresenta uma aula sobre PHP com MySQL e PostgreSQL. Ele revisa conceitos básicos de PHP como tipos de dados, variáveis, estruturas de controle e funções. Também introduz HTML e CSS para estruturação e formatação de páginas web. Por fim, explica como construir formulários usando tags como <form>, <input>, <select> e <textarea>.
Desenvolvimento de Apps e Games para Android - Parte 7Erisvaldo Junior
O documento fornece instruções sobre como desenvolver um leitor de feeds RSS para Android usando uma arquitetura MVC. Resume as principais classes do aplicativo: Modelo (Feed, Artigo), Visão (Listas de Feeds e Artigos), Controle (NewsDB para banco de dados, RSSHandler para parsing). Explica também como recuperar dados do feed e armazená-los no banco para exibição na interface do usuário.
Desenvolvimento de Apps e Games para Android - Parte 5Erisvaldo Junior
O documento discute vários tópicos sobre desenvolvimento para Android, incluindo:
1) Armazenamento de logs e internacionalização de aplicativos
2) Diferentes opções para armazenamento de dados em dispositivos Android
3) Uso de Intents para navegação entre activities e acesso a outros aplicativos
O documento apresenta conceitos básicos do Android como pacotes, organização de pacotes em modelos, classe R, recursos como drawables e valores, e componentes principais como activities e views.
O documento discute conceitos básicos de ASP.NET, incluindo ligação a bases de dados, data binding, e controles como Repeater, DataList, GridView, e DetailsView. Explica como configurar strings de ligação, acessar configurações, e usar esses controles para exibir dados de forma tabular ou lista.
Este documento apresenta uma introdução sobre persistência de dados com Hibernate e anotações. Ele discute como o Hibernate mapeia classes Java para tabelas de banco de dados usando anotações no código Java no lugar de arquivos XML. O documento também mostra como configurar e usar o Hibernate em um projeto de exemplo passo a passo, incluindo a criação de classes de entidade, mapeamento de atributos e configuração do Hibernate Util.
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearchtdc-globalcode
Este documento fornece uma visão geral de como desenvolver um buscador com PHP e Elasticsearch. Ele discute a comunidade Elasticsearch, as tecnologias da stack Elastic, características e arquitetura do Elasticsearch, conceitos básicos de cluster, índice e documentos, instalação e configuração do Elasticsearch, e exemplos de uso do cliente Elasticsearch para PHP.
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Tchelinux
Este documento discute o desenvolvimento de um buscador com PHP e Elasticsearch. Ele aborda a comunidade Elasticsearch, as características e arquitetura do Elasticsearch, exemplos de uso com PHP e ferramentas como o Docker. Além disso, apresenta um caso de uso para um sistema de planejamento acadêmico que indexa dados de cursos e instituições no Elasticsearch.
O documento descreve conceitos fundamentais do Android, incluindo estrutura de diretórios, recursos, classes R e Resources, arquivo AndroidManifest.xml e componentes como Atividades, Intenções, Serviços, Provedores de Conteúdo e Broadcast Receivers.
O documento fornece instruções sobre como usar a documentação da API Java, explicando onde ela está localizada na instalação do Java SDK, como navegar pela documentação online e encontrar classes, métodos e detalhes técnicos. Ele também apresenta exemplos de como gerar documentação JavaDoc para classes personalizadas.
Este documento descreve um workshop sobre o framework Django. Apresenta os principais conceitos como arquitetura MVT, desenvolvimento de modelos, administração, URLs, views e templates. Inclui também exemplos de configuração inicial de um projeto, gestão de base de dados, autenticação e extensão de templates.
XML (eXtensible Markup Language) é uma recomendação da W3C para gerar linguagens de marcação para necessidades especiais.
É um dos subtipos da SGML (acrônimo de Standard Generalized Markup Language ou Linguagem Padronizada de Marcação Genérica) capaz de descrever diversos tipos de dados. Seu propósito principal é a facilidade de compartilhamento de informações através da internet.
O documento descreve a plataforma .NET da Microsoft. Resumidamente:
(1) A plataforma .NET é uma iniciativa da Microsoft que visa uma plataforma única para desenvolvimento e execução de sistemas e aplicações; (2) O código é compilado em MSIL e executado na CLR interagindo com o framework .NET; (3) Os principais tipos de compilados .NET são EXE, DLL, ASPX e ASMX.
Desenvolvimento de apps e games para android parte 8Erisvaldo Junior
O documento discute o desenvolvimento de aplicativos e jogos para Android, focando em três tópicos: 1) controladores para ler arquivos XML e obter conteúdo de redes sociais, 2) serviços web RESTful e como consumi-los em aplicativos Android, 3) provedores de conteúdo e envio de SMS.
Este documento fornece um resumo sobre testes automatizados em aplicações web utilizando o framework Selenium:
1) O Selenium é uma suíte de ferramentas open source para testes automatizados em sistemas web, suportando diversos browsers e sistemas operacionais.
2) O framework Selenium é composto pelo Selenium Core, Selenium IDE, Selenium RC, Selenium Grid e Selenium WebDriver. Cada componente tem funções específicas para gravação, execução e distribuição de testes.
3) A linguagem Selenese é utilizada para elaborar scripts de teste no
O documento apresenta o framework Grails para desenvolvimento web. Grails é construído em cima do Spring e foca em produtividade através de convenções, ferramentas de código e linguagem dinâmica Groovy. O documento descreve os principais componentes de Grails como modelagem de domínio, mapeamento objeto-relacional, serviços, scripts de criação e plugins.
O Hibernate é um framework para mapeamento objeto-relacional escrito em Java que facilita o mapeamento entre bancos de dados relacionais e classes Java, gerando automaticamente consultas SQL. Ele permite desenvolver aplicações Java com persistência de dados de forma transparente através de arquivos de configuração e mapeamento.
O mercado de internet evolui em uma velocidade muito rápida, se não formos capazes de acompanhar as evoluções e apresentar inovações, ficamos para trás. Ruby e Rails vem trazer ao mundo do desenvolvimento web a produtividade e alegria necessária!
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
Desenvolvimento de Apps e Games para Android - Parte 7Erisvaldo Junior
O documento fornece instruções sobre como desenvolver um leitor de feeds RSS para Android usando uma arquitetura MVC. Resume as principais classes do aplicativo: Modelo (Feed, Artigo), Visão (Listas de Feeds e Artigos), Controle (NewsDB para banco de dados, RSSHandler para parsing). Explica também como recuperar dados do feed e armazená-los no banco para exibição na interface do usuário.
Desenvolvimento de Apps e Games para Android - Parte 5Erisvaldo Junior
O documento discute vários tópicos sobre desenvolvimento para Android, incluindo:
1) Armazenamento de logs e internacionalização de aplicativos
2) Diferentes opções para armazenamento de dados em dispositivos Android
3) Uso de Intents para navegação entre activities e acesso a outros aplicativos
O documento apresenta conceitos básicos do Android como pacotes, organização de pacotes em modelos, classe R, recursos como drawables e valores, e componentes principais como activities e views.
O documento discute conceitos básicos de ASP.NET, incluindo ligação a bases de dados, data binding, e controles como Repeater, DataList, GridView, e DetailsView. Explica como configurar strings de ligação, acessar configurações, e usar esses controles para exibir dados de forma tabular ou lista.
Este documento apresenta uma introdução sobre persistência de dados com Hibernate e anotações. Ele discute como o Hibernate mapeia classes Java para tabelas de banco de dados usando anotações no código Java no lugar de arquivos XML. O documento também mostra como configurar e usar o Hibernate em um projeto de exemplo passo a passo, incluindo a criação de classes de entidade, mapeamento de atributos e configuração do Hibernate Util.
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearchtdc-globalcode
Este documento fornece uma visão geral de como desenvolver um buscador com PHP e Elasticsearch. Ele discute a comunidade Elasticsearch, as tecnologias da stack Elastic, características e arquitetura do Elasticsearch, conceitos básicos de cluster, índice e documentos, instalação e configuração do Elasticsearch, e exemplos de uso do cliente Elasticsearch para PHP.
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Tchelinux
Este documento discute o desenvolvimento de um buscador com PHP e Elasticsearch. Ele aborda a comunidade Elasticsearch, as características e arquitetura do Elasticsearch, exemplos de uso com PHP e ferramentas como o Docker. Além disso, apresenta um caso de uso para um sistema de planejamento acadêmico que indexa dados de cursos e instituições no Elasticsearch.
O documento descreve conceitos fundamentais do Android, incluindo estrutura de diretórios, recursos, classes R e Resources, arquivo AndroidManifest.xml e componentes como Atividades, Intenções, Serviços, Provedores de Conteúdo e Broadcast Receivers.
O documento fornece instruções sobre como usar a documentação da API Java, explicando onde ela está localizada na instalação do Java SDK, como navegar pela documentação online e encontrar classes, métodos e detalhes técnicos. Ele também apresenta exemplos de como gerar documentação JavaDoc para classes personalizadas.
Este documento descreve um workshop sobre o framework Django. Apresenta os principais conceitos como arquitetura MVT, desenvolvimento de modelos, administração, URLs, views e templates. Inclui também exemplos de configuração inicial de um projeto, gestão de base de dados, autenticação e extensão de templates.
XML (eXtensible Markup Language) é uma recomendação da W3C para gerar linguagens de marcação para necessidades especiais.
É um dos subtipos da SGML (acrônimo de Standard Generalized Markup Language ou Linguagem Padronizada de Marcação Genérica) capaz de descrever diversos tipos de dados. Seu propósito principal é a facilidade de compartilhamento de informações através da internet.
O documento descreve a plataforma .NET da Microsoft. Resumidamente:
(1) A plataforma .NET é uma iniciativa da Microsoft que visa uma plataforma única para desenvolvimento e execução de sistemas e aplicações; (2) O código é compilado em MSIL e executado na CLR interagindo com o framework .NET; (3) Os principais tipos de compilados .NET são EXE, DLL, ASPX e ASMX.
Desenvolvimento de apps e games para android parte 8Erisvaldo Junior
O documento discute o desenvolvimento de aplicativos e jogos para Android, focando em três tópicos: 1) controladores para ler arquivos XML e obter conteúdo de redes sociais, 2) serviços web RESTful e como consumi-los em aplicativos Android, 3) provedores de conteúdo e envio de SMS.
Este documento fornece um resumo sobre testes automatizados em aplicações web utilizando o framework Selenium:
1) O Selenium é uma suíte de ferramentas open source para testes automatizados em sistemas web, suportando diversos browsers e sistemas operacionais.
2) O framework Selenium é composto pelo Selenium Core, Selenium IDE, Selenium RC, Selenium Grid e Selenium WebDriver. Cada componente tem funções específicas para gravação, execução e distribuição de testes.
3) A linguagem Selenese é utilizada para elaborar scripts de teste no
O documento apresenta o framework Grails para desenvolvimento web. Grails é construído em cima do Spring e foca em produtividade através de convenções, ferramentas de código e linguagem dinâmica Groovy. O documento descreve os principais componentes de Grails como modelagem de domínio, mapeamento objeto-relacional, serviços, scripts de criação e plugins.
O Hibernate é um framework para mapeamento objeto-relacional escrito em Java que facilita o mapeamento entre bancos de dados relacionais e classes Java, gerando automaticamente consultas SQL. Ele permite desenvolver aplicações Java com persistência de dados de forma transparente através de arquivos de configuração e mapeamento.
O mercado de internet evolui em uma velocidade muito rápida, se não formos capazes de acompanhar as evoluções e apresentar inovações, ficamos para trás. Ruby e Rails vem trazer ao mundo do desenvolvimento web a produtividade e alegria necessária!
Semelhante a Settings Activities - Criando atividades de configuração para aplicações Android (20)
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
4. Preferências e configurações
Configuração ou preferência, é a modificação de características e/ou comportamentos de
uma aplicação, de forma personalizada, pelo usuário.
6. APIs Preference
Para fornecer configurações ao aplicativo, é preciso usar as APIs Preference do Android
para programar uma interface coerente com a experiência do usuário em outros aplicativos
Android.
Em vez de usar objetos View para
criar a interface do usuário, as
configurações são criadas por
meio de várias subclasses da
classe Preference declaradas em
um arquivo XML.
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="checkboxPreference"
android:title="CheckboxPreference"
android:summary="Valor boolean"/>
</PreferenceScreen>
É recomendado guardar os textos no arquivo strings.xml e utiliza-los com a classe de recursos (R).
7. APIs Preference
Cada Preference aparece como um item em uma lista, e oferece a interface para que o
usuário modifique a configuração .
Cada configuração possui um grupo de chave-valor, e é salva pela API em um arquivo
SharedPreference, assim que o usuário executa uma alteração.
Não é recomendado que este arquivo sofra interações diretas, a menos que seja um
processo de leitura ou de limpeza dos dados guardados.
9. Tipos de dados
O valor salvo em SharedPreferences para cada configuração pode ser um dos seguintes
tipos de dados:
• Boolean
• Float
• Int
• Long
• String
• String set (array de strings)
11. Tipos de preferências
Toda a configuração do aplicativo é representada por uma subclasse específica da classe
Preference. Cada subclasse contém um conjunto de propriedades essenciais que permitem
especificar itens, como o título da configuração e o valor padrão.
Cada subclasse também oferece suas propriedades e interface do usuário especializadas.
12. CheckBoxPreference
Exibe um item com uma caixa de seleção para uma
configuração que esteja ativada ou desativada. O
valor salvo é um booleano.
<CheckBoxPreference
android:key="checkboxPreference"
android:title="CheckboxPreference"
android:summary="Valor boolean"/>
É recomendado guardar os textos no arquivo strings.xml e utiliza-los com a classe de recursos (R).
13. ListPreference
Abre uma caixa de diálogo com uma lista de botões de
opção.
Necessita de um array de strings para os valores e
rótulos das opções.
<string-array name="idiomasValores">
<item>pt-br</item>
<item>en</item>
<item>fr</item>
</string-array>
<string-array name="idiomas">
<item>Português</item>
<item>Inglês</item>
<item>Francês</item>
</string-array>
14. ListPreference
O valor salvo pode ser qualquer um dos tipos de
valor compatíveis.
<ListPreference
android:key="idioma"
android:title="Idioma principal"
android:summary="Valor do idioma"
android:entries="@array/idiomas"
android:entryValues="@array/idiomasValores" />
É recomendado guardar os textos no arquivo strings.xml e utiliza-los com a classe de recursos (R).
15. EditTextPreference
Abre uma caixa de diálogo com um widget EditText.
O valor salvo nesta chave é uma string.
<EditTextPreference
android:key="apelido"
android:title="Apelido"
android:dialogTitle="Adicione um apelido"
android:dialogMessage="Nome que aparecerá nas postagens"/>
É recomendado guardar os textos no arquivo strings.xml e utiliza-los com a classe de recursos (R).
16. MultiSelectListPreference
Abre uma caixa de diálogo com uma lista de
checkboxes para seleção.
Necessita de um array de strings para os valores e
outro para os rótulos.
<string-array name="alertasValores">
<item>marcacao-post</item>
<item>nova-mensagem</item>
<item>solicitacao-jogos</item>
</string-array>
<string-array name="alertas">
<item>Marcação em post</item>
<item>Nova mensagem</item>
<item>Solicitação de jogos</item>
</string-array>
17. MultiSelectListPreference
O valor salvo nesta chave é um array com os valores
selecionados no diálogo.
<MultiSelectListPreference
android:title="Alertas"
android:summary="Definição dos alertas"
android:dialogTitle="Alertas"
android:key="alertas"
android:entries="@array/alertas"
android:entryValues="@array/alertasValores"/>
É recomendado guardar os textos no arquivo strings.xml e utiliza-los com a classe de recursos (R).
18. SwitchPreference
Configuração com interruptor booleano para ligar ou
desligar uma opção.
<SwitchPreference
android:key="mostrarBarraLateral"
android:title="Mostrar Barra lateral"
android:summary="Barra de opções lateral"/>
É recomendado guardar os textos no arquivo strings.xml e utiliza-los com a classe de recursos (R).
19. <Preference
android:title="Mais informações de contrato"
android:key="maisInformacoes"
android:summary="Acesse os dados na integra"/>
Preference
Preferência personalizada, utilizada normalmente
para ações simples, como o clique em um botão.
É recomendado guardar os textos no arquivo strings.xml e utiliza-los com a classe de recursos (R).
25. Projeto
Conteúdo do projeto:
• XML PreferenceScreen
Responsável por definir quais preferências poderão ser alteradas
• SettingsFragment
Classe responsável por carregar as preferências do XML de preferências
• SettingsActivity
Activity responsável por chamar a classe SettingsFragment
• MainActivity
Activity principal do app que exibirá o botão para abrir as configurações
28. XML PreferenceScreen
Ao criar o arquivo preferences.xml, já é criada a classe PreferenceScreen:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
...
</PreferenceScreen>
29. XML PreferenceScreen
Adicione uma SwitchPreference:
...
<SwitchPreference
android:key="mostrarBarraLateral"
android:title="Mostrar Barra lateral"
android:summary="Barra de opções lateral"/>
...
É recomendado guardar os textos no arquivo strings.xml e utiliza-los com a classe de recursos (R).
30. XML PreferenceScreen
Adicione duas CheckBoxPreferences:
...
<CheckBoxPreference
android:key="atualizarAutomaticamente"
android:title="Atualizar automaticamente"
android:summary="Define se o app irá buscar atualizaçoes"/>
<CheckBoxPreference
android:key="receberBoletinsInformativos"
android:title="Receber boletins informativos"
android:summary="Define se o app receberá mensagens da newsletter"/>
...
É recomendado guardar os textos no arquivo strings.xml e utiliza-los com a classe de recursos (R).
31. XML PreferenceScreen
Adicione uma EditTextPreference:
...
<EditTextPreference
android:key="apelido"
android:title="Apelido"
android:summary="Como gostaria de ser chamado"
android:dialogTitle="Adicione um apelido"
android:dialogMessage="Nome que aparecerá nas postagens"/>
...
É recomendado guardar os textos no arquivo strings.xml e utiliza-los com a classe de recursos (R).
32. XML PreferenceScreen
Para adicionar uma ListPreference é necessário adicionar dois arrays de strings, um com valores e outro
com textos para os rótulos.
Crie um novo arquivo xml dentro do diretório values e de o nome de arrays:
33. XML PreferenceScreen
No arquivo arrays.xml adicione os arrays de idiomas:
...
<string-array name="idiomasValores">
<item>pt-br</item>
<item>en</item>
<item>fr</item>
</string-array>
<string-array name="idiomas">
<item>Português</item>
<item>Inglês</item>
<item>Francês</item>
</string-array>
...
34. XML PreferenceScreen
Voltando ao arquivo preferences.xml adicione uma ListPreference:
...
<ListPreference
android:key="idioma"
android:title="Idioma principal"
android:summary="Idioma dos textos do app"
android:entries="@array/idiomas"
android:entryValues="@array/idiomasValores" />
...
É recomendado guardar os textos no arquivo strings.xml e utiliza-los com a classe de recursos (R).
35. SettingsFragment
Para carregar as preferências do arquivo
preferences.xml é necessário criar uma
classe que estenda PreferenceFragment.
Crie uma nova classe e dê o nome de
SettingsFragment.
36. SettingsFragment
Edite a classe SettingsFragment e estenda-a de PreferenceFragment.
import android.preference.PreferenceFragment;
public class SettingsFragment extends PreferenceFragment {
...
}
37. SettingsFragment
Adicione os métodos abaixo à classe SettingsFragments para que seja possível carregar as preferências do
arquivo preferences.xml:
...
@NonNull
public static SettingsFragment newInstance() {
return new SettingsFragment();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
...
38. SettingsActivity
Crie uma nova Empty Activity e de o nome de SettingsActivity
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
}
}
39. SettingsActivity
Remova a linha que adiciona o layout da activity do método onCreate:
...
@Override
public void onCreate(Bundle savedInstanceState) {
...
Fragment fragment =
getFragmentManager().findFragmentById(android.R.id.content);
...
}
...
setContentView(R.layout.activity_settings);
...
E adicione uma nova instancia de Fragment ao método onCreate, obtendo do gerenciador de
fragmentos, o fragmento de preferências do aplicativo:
40. SettingsActivity
Ao importar a classe Fragment, o Android Studio usa automaticamente a classe de suporte à versões anteriores
do android, como a linha abaixo:
import android.support.v4.app.Fragment;
Caso a instancia de Fragment apresente problemas, substitua a linha acima por:
import android.app.Fragment;
41. SettingsActivity
Ainda no método onCreate, adicione a condição criar ou substituir o fragmento de preferências:
...
if (fragment == null) {
getFragmentManager().beginTransaction()
.add(android.R.id.content, SettingsFragment.newInstance())
.commit();
} else {
getFragmentManager().beginTransaction()
.replace(android.R.id.content, SettingsFragment.newInstance())
.commit();
}
...
42. MainActivity
Adicione um botão para abrir as configurações.
<LinearLayout ...>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Abrir Configurações"
android:id="@+id/btnConfiguracoes"/>
</LinearLayout>
É recomendado guardar os textos no arquivo strings.xml e utiliza-los com a classe de recursos (R).
43. MainActivity
No método onCreate da classe MainActivity, adicione um onClickListener para o botão, para
criar uma intenção e chamar a classe SettingsActivity.
...
Button btnConfiguracoes = (Button) findViewById(R.id.btnConfiguracoes);
btnConfiguracoes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,
SettingsActivity.class);
startActivity(intent);
}
});
45. Agrupando preferências
Agrupar preferências é uma forma de deixar a interface do
usuário mais organizada, definindo melhor o escopo de cada
preferência.
Para agrupar, ou categorizar as preferências, é utilizada a classe
PreferenceCategory, onde é possível definir um título para a
categoria e colocar todas as preferências que estarão nesse
grupo dentro dos limites de seus nós.
<PreferenceCategory android:title="Sistema">
...
</PreferenceCategory>
49. Definindo valores padrões
Para definir valores padrões para as preferências, basta adicionar o parâmetro
defaultValue, atentando-se ao tipo de valor de cada preferência.
<SwitchPreference
...
android:defaultValue="true"/>
<EditTextPreference
...
android:defaultValue="William Costa"/>
51. Utilizando preferências do usuário
A leitura das configurações é extremamente simples, e para isso é utilizada a classe
SharedPreference, que oferece métodos específicos para cada tipo de dado que precisamos obter.
• getAll();
Retorna todas as preferências
• getBoolean(String key, boolean default);
Retorna um valor do tipo boolean
• getFloat(String key, float default);
Retorna um valor do tipo float
• getInt(String key, int default);
Retornar um valor do tipo int
• getLong(String key, long default);
Retorna um valor do tipo long
• getString(String key, String default);
Retorna um valor do tipo String
• getStringSet(String key, Set<String> default);
Retorna uma coleção de strings
52. É hora de praticar!
Utilizando preferências do usuário
53. Utilizando preferências do usuário
Adicione duas novas propriedades à classe PreferenceFragments: uma instancia de
SharedPreferences, para que seja possível manipular as informações do arquivo; e uma
instancia de Preference, que será usada para aplicar a preferência do usuário ao subtítulo
da preferência apelido.
...
protected SharedPreferences sharedPreferences;
protected Preference apelido;
...
54. Utilizando preferências do usuário
No método onCreate, será solicitado ao gerenciador de preferências o arquivo de preferências
padrão, para isso defina a instancia de SharedPreferences com o arquivo padrão e busque na
PreferenceScreen pela preferência com a chave apelido.
...
sharedPreferences =
PreferenceManager.getDefaultSharedPreferences(getActivity());
apelido = findPreference("apelido");
...
55. Utilizando preferências do usuário
Ainda no método onCreate, utilize o método getString() da classe SharedPreferences e
obtenha o valor da preferência com a chave apelido.
...
apelido.setSummary(sharedPreferences.getString("apelido",""));
...
57. OnPreferenceChangeListener
Para executar uma ação após uma preferência ser alterada é adicionado um listener na
preferência, e nele são executadas as ações com os novos valores.
Ao utilizar o método onPreferenceChange deste listener, são informados dois parâmetros:
uma instancia de Preference com a preferência que foi alterada e uma instancia genérica
de Object com o novo valor da preferência.
...
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
...
return true;
}
...
58. É hora de praticar!
OnPreferenceChangeListener
59. OnPreferenceChangeListener
Adicione o listener abaixo ao método onCreate de SettingsFragment.
...
apelido.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
preference.setSummary((String) newValue);
return true;
}
});
...
61. Restaurando valores padrões
Não há um meio direto para restaurar os valores padrões das preferências. Para isso, é necessário
acessar e limpar o arquivo SharedPreferences, obrigando o sistema a utilizar os valores padrões de
cada preferência.
Para limpar o arquivo basta utilizar o método clear() da classe SharedPreferences e aplicar as
alterações.
Após a limpeza, caso algum elemento da activity utilize uma preferência, deve ser recarregado, para
evitar que o antigo valor continue aplicado.
62. Restaurando valores padrões
Adicione uma preferência personalizada ao grupo outros do arquivo preferences.xml para
que seja utilizada com um “botão” onde será aplicado um OnPreferenceClickListener para
limpar o arquivo de preferências.
...
<Preference
android:title="Restaurar preferências"
android:key="restaurar"
android:summary="Limpe os dados e retorne os valores padrões"/>
...
63. ...
restaurar = findPreference("restaurar");
restaurar.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener()
{
@Override
public boolean onPreferenceClick(Preference preference) {
...
return true;
}
});
...
Restaurando valores padrões
Adicione a propriedade abaixo à classe SettingsFragments:
...
protected Preference restaurar;
...
No método onCreate, defina a instancia para a preferência, buscando a chave restaurar na
PreferenceScreen e implemente o OnPreferenceClickListener:
64. Restaurando valores padrões
É importante, que o usuário confirme a ação de limpeza das preferências antes de sua
execução.
Para isso, adicione um AlertDialog dentro do listener da preferência.
...
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Restaurar preferências")
.setMessage("As preferências não poderão ser recuperadas")
.setNegativeButton("Cancelar", null);
...
65. Restaurando valores padrões
Defina a ação do botão de confirmação, para que depois possa ser executada a ação de
limpeza dos dados do arquivo SharedPreferences:
...
builder.setPositiveButton("Restaurar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
...
}
});
...
66. Restaurando valores padrões
Dentro do método onClick do listener do botão de confirmação, adicione a ação de limpeza
do arquivo SharedPreferences utilizando a mesma instancia da classe SharedPreferences
que foi utilizada na leitura dos dados e logo depois executar o método para que a activity
atual seja recriada, atualizando as opções das preferências.
...
sharedPreferences.edit().clear().apply();
getActivity().recreate();
...
67. Restaurando valores padrões
Por fim, crie e exiba o AlertDialog, para que as ações possam ser executadas:
...
AlertDialog dialog = builder.create();
dialog.show();
...