Академический Документы
Профессиональный Документы
Культура Документы
COMPUTAÇÃO I
GRADUAÇÃO
Unicesumar
Reitor
Wilson de Matos Silva
Vice-Reitor
Wilson de Matos Silva Filho
Pró-Reitor de Administração
Wilson de Matos Silva Filho
Pró-Reitor de EAD
Willian Victor Kendrick de Matos Silva
Presidente da Mantenedora
Cláudio Ferdinandi
<http://lattes.cnpq.br/2442608142217032>.
APRESENTAÇÃO
TÓPICOS EM COMPUTAÇÃO I
SEJA BEM-VINDO(A)!
Olá caro(a) aluno(a), seja bem-vindo(a) ao livro de Tópicos em Computação I.
Trabalho desde 2002 com T.I e por meio disso pude acumular algumas experiências que
vou compartilhar com você por meio deste livro. Espero poder contribuir com a sua
formação, descrevendo e exemplificando minha atuação com o desenvolvimento de
aplicativos móveis e, assim, fazer parte da caminhada pela sua formação profissional.
O desenvolvimento de aplicativos para dispositivos móveis cresceu consideravelmente
nos últimos anos, certamente você deve ter notado que existem inúmeros aplicativos
que resolvem diversos problemas. Devemos levar em consideração o número de usu-
ários que utilizam os smartphones para realizar diferente tarefas, até mesmo tarefas as
mais cautelosas como compras on-line.
Neste livro, iremos estudar o desenvolvimento de aplicativos móveis utilizando um dos
frameworks mais conceituados do mercado para desenvolvimento híbrido, o Ionic Fra-
mework.
Na Unidade I faremos uma introdução sobre plataformas de desenvolvimento, analisan-
do as vantagens e desvantagens do desenvolvimento nativo e híbrido. Também iremos
estudar aspectos essenciais das tecnologias que precisamos conhecer para desenvolver
nossos aplicativos.
Na Unidade II começaremos a trabalhar com o Ionic Framework, estudando seus com-
ponentes de interface e conhecendo suas ferramentas, que facilitam todo o processo
do desenvolvimento.
Na Unidade III conheceremos os recursos de interação do aplicativo com o usuário,
como eventos de clique, menus e manipulação de elementos. Também iremos tratar so-
bre uma das partes mais importante de aplicativos interativos, a persistência de dados.
Além disso, na Unidade IV, estudaremos os principais plugins que o Ionic Framework
disponibiliza para interações com processos nativos, os quais podemos interagir com
Câmera, GPS e galeria de fotos entre outros.
Por fim, na Unidade V, concluímos nossos estudos integrando nosso aplicativo com API
REST utilizando os módulos e recursos que o Ionic Framework disponibiliza.
Nosso livro está repleto de exemplos e práticas para que você possa praticar todo o
conteúdo abordado, fique a vontade para alterar os aplicativos proposto aqui, de forma
que você amplie seu conhecimento.
De acordo com Niederauer (2013), a vida acadêmica é indispensável para você ter uma
boa formação. Porém, não é o suficiente para transformá-lo(a) em um(a) profissional
completo(a) nos pontos de vista cultural, educacional e financeiro. Tenha em vista sem-
pre a busca contínua pelo conhecimento.
Espero que você aproveite este livro e procure sempre conhecer mais sobre as tecnolo-
gias citadas aqui.
Desejo uma boa leitura!
APRESENTAÇÃO
09
SUMÁRIO
UNIDADE I
15 Introdução
16 Plataformas
17 Desenvolvimento Nativo
18 Desenvolvimento Híbrido
37 Considerações Finais
43 Referências
44 Gabarito
UNIDADE II
47 Introdução
50 Instalando Ambiente
57 Componentes
64 Subheader e Subfooter
66 Cores e Ícones
73 List e Cards
88 Forms
92 Toggle e Checkbox
115 Referências
116 Gabarito
UNIDADE III
CUSTOMIZANDO COMPONENTES
119 Introdução
186 Referências
187 Gabarito
UNIDADE IV
191 Introdução
227 Referências
228 Gabarito
UNIDADE V
231 Introdução
256 Referências
12
SUMÁRIO
257 Gabarito
258 Conclusão
Professor Esp. Fábio Rogério da Silva José
INTRODUÇÃO AO DESENVOLVIMENTO
I
UNIDADE
DE APLICATIVOS PARA DISPOSITIVOS
MÓVEIS
Objetivos de Aprendizagem
■■ Conhecer as principais plataformas de desenvolvimento mobile.
■■ Entender a diferença entre desenvolvimento nativo e híbrido.
■■ Aprender o essencial sobre HTML.
■■ Conhecer o essencial sobre CSS.
■■ Aprender o essencial sobre JavaScript.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Plataformas
■■ Desenvolvimento nativo
■■ Desenvolvimento híbrido
■■ Linguagem de marcação HTML
■■ Estilos com CSS
■■ Programação com JavaScript
15
INTRODUÇÃO
Introdução
16 UNIDADE I
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
PLATAFORMAS
DESENVOLVIMENTO NATIVO
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Desenvolvimento Nativo
18 UNIDADE I
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
DESENVOLVIMENTO HÍBRIDO
Navegador Web
(Navegador embutido)
Este aplicativo pode ser executado em um
dispositivo móvel mesmo sem uma conexão de
HTML css JS rede - os arquivos HTML, CSS e JavaScript são
acessíveis no aplicativo.
Desenvolvimento Híbrido
20 UNIDADE I
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
LINGUAGEM DE MARCAÇÃO HTML
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
serão de fato interpretados pelo navegador e exibidos.
Cada elemento do HTML pode ter atributos e valores que servem para alterar
ou complementar a criação de um elemento. Na Figura 4 podemos ver um ele-
mento de caixa de texto com alguns atributos e valores.
Você pode perceber que temos 5 atributos com seus respectivos valores. Primeiro,
temos o atributo type que define o tipo do elemento, que neste caso é do tipo
texto, ou seja, é permitido digitar letras, números e caracteres especiais. Também
podemos ver o atributo placeholder onde definimos um texto de ajuda para ser
exibido quando o campo é exibido e se encontra em branco.
Na Tabela 1 são apresentados os principais elementos html e seus objetivos,
entenderemos cada elemento no decorrer do livro, no devido momento.
ELEMENTO DESCRIÇÃO
<html> O elemento HTML <html> (ou HTML root element) representa a raiz
de um HTML. Todos os outros elementos devem ser descendentes
desse elemento.
<header> O elemento HTML <header> representa um grupo de suporte intro-
dutório ou navegacional. Pode conter alguns elementos de cabeçalho,
mas também outros elementos como um logo, seções de cabeçalho,
formulário de pesquisa, e outros.
<h1>, <h2>, Elementos de cabeçalho são implementados em seis níveis, <h1> é o
<h3>, <h4>, mais importante e <h6> é o de menor importância. Um elemento de
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
vãos de texto cuja a apresentação típica seria negrito. Outro exemplo
de seu uso é como marcação da frase principal de cada parágrafo de
um artigo.
<br> O elemento HTML quebra-de-linha <br> produz uma quebra de linha
em um texto (carriage-return). É útil para escrever poemas ou um
endereço, cuja divisão de linha é significante.
<span> O elemento HTML <span> é um contêiner genérico em linha para
conteúdo fraseado, que não representa nada por natureza. Ele pode
ser usado para agrupar elementos para fins de estilo (usando os
atributos class ou id), ou para compartilhar valores de atributos como
lang. Ele deve ser usado somente quando nenhum outro elemento
semântico for apropriado. <span> é muito parecido com o elemento
<div> , entretanto, <div> é um elemento de nível de bloco, enquanto
<span> é um elemento em linha.
<audio> O elemento audio é utilizado para embutir conteúdo de som em um
documento HTML ou XHTML.O elemento audio foi adicionado como
parte do HTML5.
<video> O elemento HTML <video> é utilizado para incorporar conteúdo de
vídeo em um documento HTML ou XHTML.
<source> O elemento source é utilizado para especificar múltiplos recursos de
mídia de elementos audio e video em HTML5. É um elemento vazio e
normalmente usado para disponibilizar em vários formatos suporta-
dos por diferentes navegadores.
<canvas> O elemento HTML Canvas (<canvas>) pode ser utilizado para de-
senhar gráficos, utilizando scripts (geralmente JavaScript). Além de
desenhar gráficos, ele pode ser usado para fazer composições de
fotos e também para animações, por exemplo. Você poderá colocar
conteúdos alternativos dentro do bloco <canvas>. Este conteúdo será
renderizado também em navegadores antigos e em navegadores com
JavaScript desabilitado.
<table> O elemento HTML Table (<table>) representa dados em duas dimen-
sões ou mais.
<td> A célula da tabela HTML elemento (<td>) define uma célula de uma
tabela que contém os dados. Participa no modelo da tabela.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Você pode conhecer outros elementos e ver um exemplo de cada um deles visi-
tando a página oficial da documentação dos elementos, disponibilizada pelo
grupo Developer Mozilla.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
ESTILOS COM CSS
color:red;
Sem dúvidas os aplicativos móveis que mais se destacam são os que tra-
zem uma proposta de design bem pensada e planejada, por isso, reserve um
tempo em seus estudos para ler mais sobre cores e tipografia, isso poderá
fazer com que seu aplicativo se destaque entre os demais.
Quando utilizado este modo, devemos definir este bloco no cabeçalho da página
HTML como exibido na Figura 6.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 6 - CSS incorporado no index.html
Fonte: o autor.
E por fim temos o modo CSS com link, no qual todo o código CSS fica em outro
arquivo e apenas fazemos o link entre a página que tem os elementos e o arquivo
de CSS que manipula o estilo da página. Por exemplo, vamos criar um novo
arquivo chamado estilo.css onde iremos manipular o estilo do elemento pará-
grafo contendo apenas o código da Figura 7.
As seleções dos elementos também podem ser feitas de três formas, sendo por
identificação, classificação ou por tipo de elemento. No exemplo anterior, pode-
mos ver que a seleção foi feita por tipo, ou seja, todos os elementos do tipo <p>.
Veja nas Figuras 9, 10 e 11 um exemplo mais detalhado do CSS aplicado pelos
tipos de elementos utilizando o modo de CSS como link.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 9 - Código pagina2.html parte 1
Fonte: o autor.
<h2 id=”titulo”>Jogabilidade</h2>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
No CSS, vamos selecionar o elemento utilizando o caracter # antes do nome do
elemento que queremos selecionar, ficando como código da Figura 13.
Agora no CSS podemos fazer a seleção por classe adicionando um ponto antes
do nome da classe. Veja na Figura 16 como nosso estilo.css ficou.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 16 - CSS alterado
Fonte: o autor.
O CSS é bem mais poderoso do que o mostrado até agora, mas não se preocupe,
pois iremos apresentar detalhes, praticar e entender os recursos conforme for-
mos criando nossos aplicativos nas práticas das próximas unidades do livro.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
PROGRAMAÇÃO COM JAVASCRIPT
A primeira coisa importante que você deve saber sobre JavaScript é que Java e
JavaScript são linguagens diferentes com objetivos diferentes. A única seme-
lhança é no nome, devido a sua história de criação.
JavaScript é uma linguagem de programação interpretada, inicialmente,
com o objetivo de disponibilizar nos navegadores uma linguagem para executar
scripts no lado do cliente e criar uma interação com os elementos e os usuários,
sem a necessidade de passar por um servidor (SUEHRING, 2013).
Buttigieg e Jevdjenic (2015) complementam que, na atualidade, o JavaScript
não é uma linguagem apenas para navegadores, pois podemos escrever scripts
que rode no lado do servidor utilizando esta mesma linguagem, como por exem-
plo a plataforma NodeJS.
No decorrer das próximas unidade do livro, iremos discutir e praticar o
JavaScript.
CONSIDERAÇÕES FINAIS
Considerações Finais
38
4. Existem diversos atributos que podem ser atribuídos a um elemento por meio
do CSS, e com diferentes objetivos, como alterar a cor de fundo, cor do texto,
posicionamento, margem etc. Sendo assim, analise os atributos abaixo e as-
sinale Verdadeiro (V) ou Falso (F) com relação aos atributos que realmente
são atribuições do CSS.:
( ) background-color.
( ) float:left.
( ) position-div.
( ) canvas-size.
5. JavaScript se tornou uma das linguagem mais utilizadas no mundo para aplica-
ções web por vários motivos, um deles foi a criação de uma plataforma para de-
senvolver aplicações em JavaScript para o backend. Com base nesta afirmação,
marque a alternativa que corresponda ao nome desta plataforma:
a. JavaBackEnd
b. NodeJS
c. JavaScriptJS
d. BackendJS
e. AngularJS
40
O que é o HTML5?
O HTML5 é a nova versão do HTML4. Enquanto o WHATWG define as regras de marcação
que usaremos no HTML5 e no XHTML, eles também definem APIs que formarão a base
da arquitetura web.
Um dos principais objetivos do HTML5 é facilitar a manipulação do elemento possibili-
tando o desenvolvedor a modificar as características dos objetos de forma não intrusiva
e de maneira que seja transparente para o usuário final. Ao contrário das versões ante-
riores, o HTML5 fornece ferramentas para a CSS e o Javascript fazerem seu trabalho da
melhor maneira possível. O HTML5 permite por meio de suas APIs a manipulação das
características destes elementos, de forma que o website ou a aplicação continue leve e
funcional, sem a necessidade de criações de grandes blocos de scripts.
O HTML5 também cria novas tags e modifica a função de outras. As versões antigas do
HTML não continham um padrão universal para a criação de seções comuns e específi-
cas como rodapé, cabeçalho, sidebar, menus e etc. Não havia um padrão de nomencla-
tura de IDs, Classes ou tags. Não havia um método de capturar de maneira automática
as informações localizadas nos rodapés dos websites.
Há outros elementos e atributos que sua função e significado foram modificados e que
agora podem ser reutilizados de forma mais eficaz. Por exemplo, tags como B e I que fo-
ram descontinuados em versões anteriores do HTML agora assumem funções diferentes
e entregam mais significado para os usuários.
O HTML5 modifica a forma de como escrevemos código e organizamos a informação
na página. Seria mais semântica com menos código. Seria mais interatividade sem a
necessidade de instalação de plugins e perda de performance. É a criação de código in-
teroperável, pronto para futuros dispositivos e que facilita a reutilização da informação
de diversas formas.
O WHATWG tem mantido o foco para manter a retrocompatibilidade. Nenhum site pre-
cisará ser refeito totalmente para se adequar aos novos conceitos e regras. O HTML5
está sendo criado para que seja compatível com os browsers recentes, possibilitando a
utilização das novas características imediatamente. A regra primordial entre os desen-
volvedores web Don’t Break The Web é seguida à risca.
Fonte: Eis e Ferreira (2012).
MATERIAL COMPLEMENTAR
Material Complementar
MATERIAL COMPLEMENTAR
REFERÊNCIAS ONLINE
Em: <http://www.techtudo.com.br/noticias/noticia/2015/08/968-de-todos-os-s-
1
1. B.
2. E.
3. B.
4. V - V - F - F.
5. B.
Professor Esp. Fábio Rogério da Silva José
COMPONENTES EM IONIC
II
UNIDADE
FRAMEWORK
Objetivos de Aprendizagem
■■ Entender o surgimento do Ionic Framework.
■■ Instalar o ambiente de desenvolvimento.
■■ Criar o primeiro app.
■■ Conhecer os componentes.
■■ Aprender a usar os componentes de Header, Content e Footer.
■■ Entender como usar os componentes de SubHeader e SubFooter.
■■ Aprender como utilizar diferentes cores, ícones e Botões.
■■ Entender como usar os componentes de List e Cards.
■■ Aprender a usar os componentes de form.
■■ Aprender a usar os componentes de Toggle e Checkbox.
■■ Entender como usar os componentes de Radio Buttons, Range e Select.
■■ Aprender a usar os componentes de Tabs e Grid.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Introdução ao Ionic Framework
■■ Instalando ambiente
■■ Criando o primeiro app
■■ Componentes
■■ Header, Content e Footer
■■ SubHeader e SubFooter
■■ Cores, Ícones e Botões
■■ List e Cards
■■ Forms
■■ Toggle e Checkbox
■■ Radio Buttons, Range e Select
■■ Tabs e Grid
47
INTRODUÇÃO
Introdução
48 UNIDADE II
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
INTRODUÇÃO AO IONIC FRAMEWORK
No momento em que este livro foi escrito, o AngularJS lançou a versão 2.0,
que mudou totalmente a forma de implementar aplicações SPA (single page appli-
cation), também não iremos abordar este tema, mas irei indicar no final desta
unidade alguns livros para leituras sobre o assunto. Nesta mesma época o Ionic
lançou uma nova versão do seu framework, com várias melhorias e com a imple-
mentação do AngularJS 2.0, algumas lógicas que são feitas no Ionic 1.0 são bem
diferentes da versão 2.0.
O Ionic utiliza o AngularJS para controlar os objetos e configurar as telas,
que chamamos de rotas do aplicativo. Não se preocupe, veremos esse conte-
údo passo a passo.
Como já foi dito anteriormente, o Ionic utiliza o Apache Cordova para dispo-
nibilizar os recursos nativos para a aplicação, mas, quando se utiliza o AngularJS
seu aplicativo pode não funcionar como deveria, pois o bind do objeto pode
não ser atualizado na view quando não passa pelo apply do AngularJS. Se você
não conhece o AngularJS, essa explicação ficou vaga, mas fique tranquilo(a), no
futuro você entenderá.
Você também irá se deparar com o ngCordova, que é apenas um atalho para
chamar os plugins nativos do Apache Cordova, de forma que seja escutado pelo
AngularJS.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
INSTALANDO AMBIENTE
Com o NodeJS e Git instalado vamos instalar o Cordova e o Ionic. Esse pro-
cesso é bem simples e consiste em apenas um comando, pois vamos utilizar o
NPM para fazer a instalação.
Abra um terminal, certifique-se que você tenha permissão de administrador, e
digite os dois comando a seguir. Os exemplos deste material são apresentados em
ambiente Windows, sendo assim, para acessar o terminal, abra o programa CMD.
ionic --version
Instalando Ambiente
52 UNIDADE II
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
CRIANDO O PRIMEIRO APP
Vamos começar com um projeto em branco, para isso digite o comando start, e
seus parâmetros, no terminal.
(Y/n): n
Para testar nosso primeiro aplicativo, entre na pasta que foi criada com o nome
do seu aplicativo, via linha de comando.
cd PrimeiroApp
ionic serve
Na primeira vez que você executa este comando, o Ionic irá perguntar em qual
IP você deseja deixar acessível seu projeto, para este momento escolha localhost.
Você verá seu aplicativo rodando no navegador como a Figura 1.
Figura 1 - Print do aplicativo rodando no navegador Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Fonte: o autor.
Vamos discutir cada arquivo no seu devido momento, por enquanto precisamos
apenas conhecer o config.xml e a pasta www.
CONFIG.XML
<widget id=”com.ionicframework.
primeiroapp117395” version=”0.0.1” …
Da linha três até a linha nove podemos ver o nome do aplicativo, que irá apare-
cer nos atalhos do device, com a descrição e os dados do autor. As demais linhas
são configurações de inicialização, habilitação de plugins e permissões, as quais
discutiremos quando chegar o momento.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
WWW
Nesta pasta, www, você irá encontrar os arquivos HTML/CSS e JavaScript do seu
aplicativo, e todos os arquivos, contidos nesta pasta ou criados por você, pode-
rão ser utilizados pelo seu aplicativo. Vamos entender a estrutura que o Ionic
criou dentro desta pasta.
No arquivo style.css iremos codificar os estilos personalizados dos elementos
quando necessário. Na pasta img, iremos colocar todas nossas imagens. O
arquivo app.js é o principal arquivo JavasScript do aplicativo, nele iremos
configurar as rotas (telas) e criar os controles. O arquivo index.html é nossa
primeira tela do aplicativo (view).
COMPONENTES
<ul class=”list”>
<li class=”item”>
...
</li>
</ul>
Componentes
58 UNIDADE II
<ion-item>
...
</ion-item>
</ion-list>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Os resultados das duas formas são os mesmos. Neste material, vamos utilizar,
na maioria dos casos, os nomes de elementos do Ionic, para reduzir a digita-
ção de códigos.
Header é um componente
que fica sempre fixo no topo,
utilizado para adicionar título
e botões de ações sobre a
tela aberta. Lembrando que
você pode adicionar novos
elementos no CSS para modi-
ficar de forma diferente ao
que o Ionic disponibiliza ou
até mesmo criar um Header
totalmente novo com o seu
próprio CSS.
Crie um novo projeto chamado AppHeader, não se esqueça de sair da pasta
do projeto criado anteriormente, para não gerar confusão nas pastas.
cd ..
cd appHeader
ionic serve
<ion-header-bar class=”bar-positive”>
</ion-header-bar>
Esta visualização não é muito útil pois não simula o tamanho de tela do device.
Você pode redimensionar seu browser para que fique menor na largura ou utilizar
o módulo visualização mobile do Chrome. Para isso pressione F11 no Windows/
Linux ou option+command+J no Mac. Ao lado direito do terminal que foi apre-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
sentado, clique nos três pontinhos e escolha a visualização Dock to right para
que seu terminal fique ao lado direito da página que é exibida (Figura 4).
</ion-header-bar>
O content é a área de conteúdo do Ionic, apenas o que estiver dentro deste ele-
mento irá receber rolagem, ou seja, o Header é fixo no topo e o Content utiliza o
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
restante da página, caso tenha mais elementos do que pode ser exibido na inter-
face, ele irá criar uma barra de rolagem.
Ainda no aplicativo AppHeader, adicione a classe padding no elemento ion-
-content para adicionar um espaço interno, e adicione os elementos dentro de
ion-content como mostra o exemplo a seguir.
<body ng-app=”starter”>
<ion-pane>
<ion-header-bar class=”bar-positive”>
</ion-header-bar>
<ion-content class=”padding”>
<img src=”img/ionic.png”>
<p>parágrafo 1</p>
<img src=”img/ionic.png”>
<p>parágrafo 2</p>
<img src=”img/ionic.png”>
<p>parágrafo 3</p>
<img src=”img/ionic.png”>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<p>parágrafo 4</p>
<img src=”img/ionic.png”>
<p>parágrafo 5</p>
<img src=”img/ionic.png”>
<p>parágrafo 6</p>
</ion-content>
</ion-pane>
</body>
<ion-footer-bar class=”bar-balanced”>
</ion-footer-bar>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
SUBHEADER E SUBFOOTER
...
<ion-pane>
<ion-header-bar class=”bar-positive”>
</ion-header-bar>
<h1 class=”title”>SubHeader</h1>
</ion-header-bar>
<ion-content class=”padding”>
...
</ion-content>
</ion-footer-bar>
</ion-footer-bar>
</ion-pane>
...
Subheader e Subfooter
66 UNIDADE II
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
CORES E ÍCONES
O Ionic vem com um conjunto de cores e uma nomenclatura, que podem ser
observados na Figura 6.
Cores e Ícones
68 UNIDADE II
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
nando a classe button-block ou se for utilizado em um formulário e deseja que
seja completo, por exemplo, ou seja, sem bordas arredondadas nas laterais pode
utilizar a classe button-full:
Primeiro botão
</button>
Os Buttons tem classes para tratar botões de diferentes tamanhos como peque-
nos, normais e grandes:
Botão pequeno
</button>
Botão normal
</button>
Botão grande
</button>
Outro estilo bem utilizado é botão com apenas bordas ou apenas textos:
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
</button>
</button>
Porém, sem dúvida, o que traz mais elegância para um aplicativo, e uma melhor
experiência com o usuário, é um botão com ícone. Podemos customizar de dife-
rente formas os botões com os ícones, basta adicionar o nome da classe do ícone
desejado:
Home
</button>
Cores e Ícones
70 UNIDADE II
positive”>
Favoritos
</button>
Saiba mais
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
</button>
Voltar
</button>
Ações
</button>
O Header e Footer também aceitam botões, e você precisa apenas adicionar antes
ou depois do elemento title, para deixar a esquerda ou à direita:
<ion-header-bar class=”bar-balanced”>
<button class=”button”>Editar</button>
</ion-header-bar>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<ion-header-bar class=”bar-balanced”>
</ion-header-bar>
Por fim, na área de conteúdo, é possível criar um barra de botões, na qual ocu-
pam 100% da largura da página e divide o tamanho de cada botão por igual:
<div class=”button-bar”>
Cores e Ícones
72 UNIDADE II
</div>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
LIST E CARDS
O componente List é uma lista de itens e é muito comum sua utilização em apli-
cativos móveis; podem conter textos simples, botões, ícones, rótulos e imagens.
Crie um novo aplicativo chamado appList:
<ion-content class=”padding”>
List e Cards
74 UNIDADE II
<ion-list>
<ion-item>
</ion-item>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<ion-item>
<h2>Denver, CO</h2>
</ion-item>
<ion-item>
<h2>Denver, CO</h2>
</ion-item>
<ion-item>
<h2>Tampa, FL</h2>
</ion-item>
<ion-item>
</ion-item>
</ion-list>
</ion-content>
O Ionic tem algumas tratativas fixas para as listas e, quando necessário, é preciso
customizar via CSS os demais conteúdos e elementos. Veremos sobre customi-
zação de elementos na próxima unidade.
O resultado do código anteriormente apresentado pode ser visto na Figura 9.
List e Cards
76 UNIDADE II
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 9 - Print do aplicativo
Fonte: o autor.
<ion-item class=”item-divider”>
Cidades do Brasil
</ion-item>
<ion-item>
Rio de Janeiro
</ion-item>
<ion-item>
Florianópolis
</ion-item>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<ion-item>
<h2>Tampa, FL</h2>
</ion-item>
Você deve ter observado que o ícone ficou pequeno, e não ficou ao lado direito,
como é comum ser utilizado. Agora vamos adicionar a classe item-icon-left, que
altera o estilo do ícone dentro do item, ficando assim:
<ion-item class=”item-icon-left”>
List e Cards
78 UNIDADE II
<h2>Tampa, FL</h2>
</ion-item>
Você irá perceber com o tempo que a maioria dos elementos do Ionic são cus-
tomizados dessa forma, ou seja, adicionando classes para compor com outros
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
elementos.
Alterando a classe do item para item-icon-right o ícone passa a ser exibido
na direita:
<ion-item class=”item-icon-right”>
<ion-item>
<h2>Denver, CO</h2>
</ion-item>
<ion-item>
Rio de Janeiro
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<span class=”item-note”>
Popular
</span>
</ion-item>
Um item pode ser clicável, basta alterar o componente para <i> e adicionar a
classe item. Vamos alterar um dos itens deixando o código assim:
<a class=”item”>
</a>
Perceba que quando clicamos neste item um efeito de fundo cinza é exibido.
Vamos inserir um botão em um dos itens que tem apenas um texto, adicio-
nando a classe item-button-left ou item-button-right:
List e Cards
80 UNIDADE II
<ion-item class=”item-button-right”>
Florianópolis
</button>
</ion-item>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Nossa lista deve apresentar algo parecido como a Figura 10.
Na pasta img do seu projeto adicione três imagens diferentes para usarmos como
exemplo, se preferir, você pode usar as imagens utilizadas neste material, que
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<ion-content>
<ion-list>
<ion-item class=”item-avatar”>
<img src=”img/city_1.jpg”>
</ion-item>
<ion-item class=”item-avatar”>
<img src=”img/city_2.jpg”>
<h2>Lexington, KY </h2>
List e Cards
82 UNIDADE II
</ion-item>
<ion-item class=”item-avatar”>
<img src=”img/city_3.jpg”>
<h2>Washington, DC</h2>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
</ion-item>
</ion-list>
</ion-content>
Outra opção para lista com imagem é utilizar a classe item-thumbnail-left para
adicionar uma imagem maior e sem arredondamento ao lado esquerdo, ou o
item-thumbnail-right para adicionar ao lado direito. Também podemos adicio-
nar a classe item-text-wrap para o texto não ser limitado com reticências:
Adicione dois item em nossa lista como thumbnail:
<ion-item class=”item-thumbnail-left”>
<img src=”img/city_4.jpg”>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<h2>Victoria, BC</h2>
</ion-item>
<img src=”img/city_5.jpg”>
<h2>Sacramento, CA</h2>
</ion-item>
É comum ver este componente sendo utilizado nas aplicações mais recentes,
pois com ele podemos exibir informações com um design lúdico de um cartão.
Embora dentro do Card possa ser adicionado qualquer estrutura de elementos,
é indicado utilizar itens como utilizamos em listas.
Crie um novo aplicativo com o nome appCard:
List e Cards
84 UNIDADE II
<ion-content>
<div class=”card”>
<ion-item class=”item-text-wrap”>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Este é um simples Card com um texto para
visualizar o comportamento do componente.
</ion-item>
</div>
</ion-content>
Você pode adicionar a classe list em um card para ele se comportar igual a uma
lista, desta forma podemos utilizar qualquer componente de lista em nosso card.
Veja um exemplo com diferentes classes de itens:
Opções do usuário
</div>
</div>
Definir endereço
</a>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
</a>
</a>
</a>
</div>
List e Cards
86 UNIDADE II
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 12 - Print do aplicativo de card alterado
Fonte: o autor.
<img src=”img/user1.png”>
</div>
<p>
</p>
</div>
</div>
List e Cards
88 UNIDADE II
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
FORMS
Na área de conteúdo vamos criar três campos e um botão. Cada campo deve estar
dentro de um label que recebe a classe item e item-input para que os campos
ocupem 100% do espaço do item da lista e definimos um valor para a proprie-
dade placeholder, do HTML5, para quando um valor for digitado no campo o
rótulo oculte. O botão está em uma outra div com a classe padding para não
ficar colado nas laterais.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<ion-list>
</label>
</label>
<textarea placeholder=”Comentário”></
textarea>
</label>
</ion-list>
<div class=”padding”>
Forms
90 UNIDADE II
Enviar comentário
</button>
</div>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 14 - Print do aplicativo de form
Fonte: o autor.
<span class=”input-label”>Username</span>
<input type=”text”>
</label>
label”>
</label>
<span class=”input-label”>Sobrenome</span>
</label>
<label class=”item-input-wrapper”>
</label>
Enviar
Forms
92 UNIDADE II
</button>
</div>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<input type=”text” placeholder=”Procurar...”>
</label>
TOGGLE E CHECKBOX
Vamos criar uma lista de opções sendo cada item um toggle marcado com a
classe item-toggle, assim, o texto fica ao lado esquerdo e o botão toggle ao lado
direito. As cores de cada toggle pode ser customizada conforme os temas do Ionic.
<ion-content class=”padding”>
</div>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<ion-list>
<ion-item class=”item-toggle”>
HTML5
<input type=”checkbox”>
<div class=”track”>
<div class=”handle”></div>
</div>
</label>
</ion-item>
<ion-item class=”item-toggle”>
CSS
<input type=”checkbox”>
<div class=”track”>
Toggle e Checkbox
94 UNIDADE II
<div class=”handle”></div>
</div>
</label>
</ion-item>
<ion-item class=”item-toggle”>
JavaScript
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<label class=”toggle toggle-balanced”>
<input type=”checkbox”>
<div class=”track”>
<div class=”handle”></div>
</div>
</label>
</ion-item>
</ion-list>
</ion-content>
Este componente também usa como base o componente lista onde cada item
recebe um checkbox e você pode customizar as cores utilizando os temas. Para
exemplificar, vamos deixar o último item com uma cor diferente:
<ion-list>
<ion-item class=”item-checkbox”>
<label class=”checkbox”>
<input type=”checkbox”>
</label>
HTML5
Toggle e Checkbox
96 UNIDADE II
</ion-item>
<ion-item class=”item-checkbox”>
<label class=”checkbox”>
<input type=”checkbox”>
</label>
CSS
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
</ion-item>
<ion-item class=”item-checkbox”>
<input type=”checkbox”>
</label>
JavaScript
</ion-item>
</ion-list>
Radio Buttons, ao contrário dos checkbox, permite selecionar apenas uma opção
dentre a listagem, enquanto os checkbox permitem selecionar mais de uma opção.
Crie um novo projeto chamado appRadioButtons:
Vamos criar um subHeader e uma lista, nela vamos adicionar alguns radio but-
tons. O body da página deverá estar assim:
<body ng-app=”starter”>
<ion-pane>
<ion-header-bar class=”bar-positive”
align-title=”center”>
</ion-header-bar>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
</ion-header-bar>
<ion-content>
<ion-list>
<ion-radio>PHP</ion-radio>
<ion-radio>Java</ion-radio>
<ion-radio>JavaScript</ion-radio>
<ion-radio>.NET</ion-radio>
<ion-radio>Ruby</ion-radio>
<ion-radio>Python</ion-radio>
<ion-radio>Go</ion-radio>
</ion-list>
</ion-content>
</ion-pane>
</body>
Adicione na área de conteúdo algumas opções com cores diferente para exem-
plificar o componente:
<ion-list>
</ion-item>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
</ion-item>
</ion-item>
</ion-list>
<ion-content>
<ion-list>
<div class=”input-label”>
</div>
<select>
<option>Laranja</option>
<option selected>Maça</option>
<option>Banana</option>
<option>Caqui</option>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<option>Goiaba</option>
</select>
</ion-item>
</ion-list>
</ion-content>
TABS E GRID
O componente tabs permite uma navegação entre telas simulando uma seleção
de abas. Muitos aplicativos em iOS utilizam este padrão de navegação. Crie um
novo projeto chamado appTabs:
Este componente é melhor utilizado com as rotas em AngularJS, mas como neste
material veremos apenas o essencial dos componentes, vamos criar algo mais
simples, apenas para conhecer o componente.
As tabs podem ser apenas texto, ícone ou texto e ícone. Também podemos
escolher a posição do ícone e as cores conforme temas do ionic.
Cada tab tem sua própria área de conteúdo, então, vamos adicionar três tabs
com texto e ícone, e vamos definir diferentes ícones para quando a aba estiver
selecionada ou não. Vamos ao código:
<body ng-app=”starter”>
<ion-pane>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<ion-header-bar class=”bar-assertive”>
</ion-header-bar>
<ion-view>
<ion-content class=”padding”>
</ion-content>
</ion-view>
</ion-tab>
TABS e GRID
104 UNIDADE II
<ion-view>
<ion-content class=”padding”>
</ion-content>
</ion-view>
</ion-tab>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<ion-tab title=”Configurações” icon-
on=”ion-ios-gear” icon-off=”ion-ios-gear-
outline”>
<ion-view>
<ion-content class=”padding”>
</ion-content>
</ion-view>
</ion-tab>
</ion-tabs>
</ion-pane>
</body>
Por ser um componente muito utilizado para navegação, Android e iOS exibem
diferente, podemos testar utilizando o Ionic lab, que tem por objetivo mostrar
a aplicação nos dois sistemas. Para utilizar o Ionic lab, digite --lab no final do
comando para testar o aplicativo no browser:
Vamos criar uma grid simples com duas linhas e duas colunas, adicione na área
de conteúdo o componente:
<ion-content>
<div class=”row”>
<div class=”col”>1</div>
<div class=”col”>2</div>
</div>
<div class=”row”>
<div class=”col”>3</div>
<div class=”col”>4</div>
</div>
</ion-content>
Para verificar com mais clareza nossos exemplos, vamos alterar a cor de fundo
de cada coluna e adicionar uma borda, editando o style.css da pasta css:
TABS e GRID
106 UNIDADE II
.col {
background-color: #CCC;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Podemos ver o resultado na Figura 19.
<div class=”row”>
<div class=”col”>6</div>
<div class=”col”>7</div>
</div>
Perceba que a primeira coluna está ocupando 50% do espaço da linha, e as demais
colunas, que estão sem tamanho fixo, ocupam o espaço que sobrou:
Outro recurso é deixar uma coluna em branco, ou seja, reservar o espaço porém
não exibir nenhum elemento, adicione uma nova linha:
<div class=”row”>
<div class=”col”>9</div>
</div>
TABS e GRID
108 UNIDADE II
<div class=”row”>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<div class=”col col-center”>11</div>
<div class=”col”>13<br>14<br>15<br>16</div>
</div>
Caso o alinhamento seja para a linha inteira, adicione a classe direto no row ao
invés de adicionar na col desta forma:
<div class=”col”>10</div>
<div class=”col”>11</div>
<div class=”col”>12</div>
<div class=”col”>13<br>14<br>15<br>16</div>
</div>
Utilizar números fixos de colunas pode não ser apropriado se você precisa
de um layout responsivo, nestes casos, você pode utilizar três classes para
tamanhos diferentes. Vamos ver isso na prática, adicione uma nova linha com
quatro colunas:
<div class=”col”>17</div>
<div class=”col”>18</div>
<div class=”col”>19</div>
<div class=”col”>20</div>
</div>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Estas são classes criadas pelo framework, mas nada impede de você criar seus
próprios tamanhos e validação de responsividade.
TABS e GRID
110 UNIDADE II
CONSIDERAÇÕES FINAIS
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
seus próprios componentes com CSS.
Lembre-se que o Ionic já traz inúmeros componentes de interface, mas você
pode, e deve, estender os recursos, bem como criar outros frameworks que pro-
porcionem elementos e componentes ricos em interação com o usuário.
Como nosso objetivo foi apresentar os principais componentes, não testa-
mos de todas as formas dos componentes, sendo assim, sugiro que antes de ir
para a próxima unidade, crie novos aplicativos testando e validando as diferen-
tes aplicabilidades dos componentes vistos até este momento. Você pode utilizar
como guia a documentação oficial do Ionic Framework5.
Outro assunto que é importante relembrarmos, e que foi discutido nesta
unidade, é a importância que o design tem para seu aplicativo. Elementos como
UX Design e UI Design devem ser estudados com mais ênfase. Devemos ter em
mente que criar aplicações com design inovadores e ricos em recursos visuais
não é simples, pois isso vai sendo melhorado com o tempo de prática. Para seu
início, você pode se inspirar em trabalhos criados por outros usuários e anali-
sar sua linha de pensamento.
Na próxima unidade iremos abordar a customização de componentes, bem
como a criação de novos estilos de componentes e diferentes aplicações que
podem ser extendidas e complementadas com recursos customizado. Então,
vamos lá, prepare-se e não deixe de fazer todos os exercícios, lembre-se que à
prática leva a perfeição.
3. Sabemos que os temas possuem algumas limitações, mas que é possível criar
novos temas com base nos já existentes. Sendo assim, assinale verdadeiro (V)
ou falso (F) com relação à existência dos temas apresentados a seguir:
( ) positive.
( ) balanced.
( ) royal.
( ) dark.
( ) calm.
112
Ionic 2
Ao longo dos últimos dois anos, milhões de desenvolvedores de quase todas as indús-
trias ao redor do mundo têm construído mais de 1,2 milhão de aplicativos móveis com
Ionic.
Quando surgiu o Ionic em 2013, tinha como objetivo de criar uma maneira melhor para
os desenvolvedores web construir aplicações para as lojas de aplicativos. Hoje, Ionic é
a tecnologia mais popular para desenvolvimento móvel multi-plataforma do mundo.
Analisando o seu crescimento, o time do Ionic optou por melhorar e atualizar sua tecno-
logia, permitindo não apenas a atual geração de desenvolvedores móveis, mas também
que outras milhões de pessoas percebam que podem construir aplicativos surpreen-
dentes.
A criação do Ionic 2 foi como se o time do Ionic tivesse voltado à estaca zero e repensado
como um kit de ferramentas móvel deve funcionar. Com isso, foi melhorado drastica-
mente seu desempenho e reduzido a complexidade do código. A nova versão utiliza
também a nova versão do AngularJS, e isto fez com que toda a forma de implementar
aplicativos com Ionic 1 ficasse diferente da versão 2.
Mas não interprete essa nova versão como sendo uma ação que irá descontinuar o Io-
nic versão 1, ao contrário, ela irá continuar sendo utilizada devido ao fato de muitos
não gostarem da nova versão e acharem mais prático e simples de criar aplicações com
Angular 1. Recomendo você seguir os passos de instalação e instalar a versão 2 para
conhecer as melhorias em recursos visuais e comandos.
No momento em que foi escrito este livro, o Angular já estava sendo desenvolvido para
uma nova versão (versão 4), com inúmeros recursos ajustados para ganho de perfor-
mance. Portanto, não conseguimos prever o futuro das versões do Angular, nem do Io-
nic, mas como dito nesta unidade, você pode explorar a criação de aplicativos móveis
utilizando o Apache Cordova, no qual você terá total controle sobre qual framework de
frontend utilizar.
Outro ponto de extrema importância com relação ao Ionic versão 1, é que a comunida-
de global do framework está muito ativa nesta versão, sempre descrevendo pontos de
melhorias e métodos que podem ajudar sua aplicação a ter um ganho significativo de
performance.
Fonte: o autor.
MATERIAL COMPLEMENTAR
REFERÊNCIAS ON-LINE
mai. 2017.
GABARITO
1. A.
2. A.
3. Todas Verdadeiras.
4. E.
5. B.
Professor Esp. Fábio Rogério da Silva José
CUSTOMIZANDO
III
UNIDADE
COMPONENTES
Objetivos de Aprendizagem
■■ Customizando listas
■■ Fontes, plano de fundo geral e campos
■■ Criando badges e customizando botões
■■ Customizando grid
■■ Customizando formulários
■■ Header transparente e scroll vertical
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Customizando listas
■■ Fontes, plano de fundo geral e campos
■■ Criando badges e customizando botões
■■ Customizando grid
■■ Customizando formulários
■■ Header transparente e scroll vertical
119
INTRODUÇÃO
Introdução
120 UNIDADE III
CUSTOMIZANDO LISTAS
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
CUSTOMIZANDO COMPONENTES
121
Primeira coisa vamos criar um subheader para que o campo de pesquisa fique
sempre fixo no topo e apenas a lista sofra rolagem. A seguir, do seu header, adi-
cione um subheader:
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
</div>
</ion-header-bar>
Na área de conteúdo (ion-content), adicione uma lista com avatar e botão do lado
direito. Vamos adicionar a classe list-custom para facilitar a seleção no CSS desta
nossa lista customizada. Vamos também adicionar um span com a classe badge-
-custom, para dar um comportamento diferente do badge que o Ionic propõem1.
1 Para gerar imagens de usuários você pode acessar o site disponível em: <https://randomuser.me/>.
Customizando Listas
122 UNIDADE III
<ion-content class=”padding”>
<ion-list class=”list-custom”>
<img src=”img/user1.jpg”>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<span class=”badge-custom amigo”>Amigo</span>
</button>
</ion-item>
<img src=”img/user2.jpg”>
</button>
</ion-item>
CUSTOMIZANDO COMPONENTES
123
right”>
<img src=”img/user3.jpg”>
</button>
</ion-item>
...
...
Crie mais itens para que seja possível validar a rolagem da página.
O resultado, utilizando apenas os componentes do Ionic, pode ser visto na
Figura 2.
Customizando Listas
124 UNIDADE III
.bar.bar-calm {
border-color: #3ec3d6;
background-color: #3ec3d6;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
background-image:none;
.bar-subheader {
height: 70px;
background-image:none;
.has-subheader {
top: 110px;
Aqui, alteramos a cor do tema do Ionic para outra cor, aumentamos o tamanho
do subheader e ajustamos a área de conteúdo para respeitar o novo tamanho do
subheader. Vamos ajustar o campo de pesquisa:
.item-search {
border-radius: 16px;
margin-top: 10px;
CUSTOMIZANDO COMPONENTES
125
margin-bottom: 10px;
.icon-search {
margin-right: 10px;
font-size: 20px;
}
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
.list-custom .item {
border-width:0;
border-bottom-width: 1px;
border-top-width: 1px;
.list-custom .item:first-child {
border-top-width: 0;
.list-custom button {
margin-top: 8px;
border-radius: 50%;
width: 40px;
Customizando Listas
126 UNIDADE III
height: 40px;
.list-custom button i{
margin-left: -2px;
margin-top: 4px;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
.list-custom span {
font-size: 12px;
.list-custom h2 {
margin-left: 10px;
top: 6px;
left: 5px;
max-width: 60px;
max-height: 60px;
CUSTOMIZANDO COMPONENTES
127
.button.button-stable,
.button.button-stable:hover {
background-color: #d0d5d8;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
color: #fff;
.button.button-stable.activated {
background-color: #c4c9cd;
Alteramos a cor de fundo e a cor do ícone. Para concluir nosso app, vamos adi-
cionar as classes do badge customizado:
.badge-custom {
background-color: #000;
color: #fff;
padding-left: 10px;
padding-right: 10px;
border-radius: 10px;
float: left;
Customizando Listas
128 UNIDADE III
margin-left: 10px;
.badge-custom.amigo {
background-color: #7bcef3;
.badge-custom.familia {
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
background-color: #efbb68;
.badge-custom.faculdade {
background-color: #74cb92;
Em geral, nosso novo componente destaca o span com cores diferentes para
cada categoria de contato.
Trabalhar com imagens de plano de fundo é sempre instigante e deixa nosso apli-
cativo com um aspecto de maioridade, mas lembre-se que a escolha de uma boa
imagem é fundamental para um design rico. Neste exemplo, a imagem é escura
para destacar os campos com cor clara (Figura 3).
CUSTOMIZANDO COMPONENTES
129
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Vamos primeiro criar nossa estrutura de elementos HTML, neste exemplo não
teremos header:
<ion-pane class=”login-custom”>
<ion-content>
<h1>LifeBeach <span>night</span></h1>
<ion-list class=”list-inset”>
<ion-item class=”item-input”>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
placeholder-icon”></i>
</ion-item>
<ion-item class=”item-input”>
</ion-item>
<ion-item class=”item-input”>
</ion-item>
CUSTOMIZANDO COMPONENTES
131
</ion-item>
<ion-item class=”item-button”>
</ion-item>
<ion-item class=”item-button”>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
</button>
</ion-item>
</ion-list>
</ion-content>
</ion-pane>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 4 - Print do aplicativo de login
Fonte: o autor.
.login-custom {
background-color: #000;
background-image: url(../img/fundo.png);
background-size: cover;
background-position: center;
Minha imagem de fundo está com transparência para poder fundir com a cor
preta do próprio elemento, você pode usar outros recursos mais performáticos
CUSTOMIZANDO COMPONENTES
133
.list {
width: 75%;
margin: auto;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
margin-top: 60px;
.item {
background: none;
border:none;
.item-input {
.item-input i {
color: #fff;
font-size: 25px;
.item-input input {
font-size: 16px;
margin-left: 10px;
color: #fff;
.item-button {
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
padding: 0;
CUSTOMIZANDO COMPONENTES
135
Com o parâmetro --ionic informado, o módulo irá baixar a fonte e salvar den-
tro da pasta fonts, criar o font.css dentro da pasta css e alterar o index.html para
adicionar o carregamento da fonte.
O Roboto já tem instalado nos aparelhos com sistema operacional Android,
mas para outras plataformas, incluindo no browser, precisamos instalar a fonte
explicitamente.
Agora vamos alterar a fonte do título do nosso aplicativo, no style.css adi-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
h1 {
font-family: ‘Pacifico’;
color: #fff;
text-align: center;
font-size: 50px;
padding-top: 50px;
h1 span {
font-family: ‘Roboto’;
font-size: 18px;
position: absolute;
margin-top: 55px;
margin-left: -35px;
Definimos a fonte Pacifico para o h1, com exceção do span interno, no qual dei-
xamos com a fonte Roboto e um posicionamento diferente.
Para concluir nosso app, vamos customizar os botões:
.button-first {
padding-top: 20px;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
.button.button-positive {
background-color: #3B5998;
.button-clear.button-clear {
padding: 0;
margin: 0;
font-size: 12px;
text-decoration: underline;
Alteramos a cor do tema azul do Ionic para ficar mais relativo com o azul do
Facebook e ajustamos as margens dos botões.
CUSTOMIZANDO COMPONENTES
137
Sem dúvida, criar aplicativos com uma tipografia diferenciada traz um outro
sentido visual ao seu aplicativo, e explorar este universo da tipografia é algo
que trará ganhos significativos em UI Design para seus projetos.
mos utilizar conceitos, como o badges, para outras finalidades (Figura 5).
<ion-content>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<div class=”top-profile”>
<div class=”badge”>3</div>
</div>
<div class=”sociais”>
CUSTOMIZANDO COMPONENTES
139
</div>
<h3>SOBRE MIM</h3>
<h3>FALE COMIGO</h3>
<div class=”contato”>
</div>
<div class=”contato”>
</div>
<div class=”contato”>
</div>
<div class=”contato”>
</div>
</ion-content>
Adicionamos alguns elementos de imagem, títulos e botões. Nosso app sem cus-
tomização pode ser visto na Figura 6.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
.bar {
background:none;
CUSTOMIZANDO COMPONENTES
141
.top-profile {
text-align: center;
margin-top: 20px;
.top-profile img {
width: 120px;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
border-radius: 50%;
.top-profile .badge {
background-color: #FF4B5A;
width: 22px;
height: 22px;
color: #fff;
border-radius: 50%;
text-align: center;
position: absolute;
margin-left: 90px;
margin-top: 5px;
.name {
font-size: 18px;
color: #4E4E4E;
text-align: center;
margin: 0;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
.prof {
font-size: 12px;
color: #A5A5A5;
text-align: center;
margin: 0;
.sociais {
text-align: center;
margin-top: 10px;
.sociais button {
border-radius: 50%;
CUSTOMIZANDO COMPONENTES
143
min-width: 45px;
min-height: 45px;
margin: 5px;
.sociais button.button.icon:before {
font-size: 20px;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
.button-positive.button-facebook {
background-color: #5171A5;
h3 {
color: #909090;
font-size: 14px;
padding: 10px;
margin-bottom: 0;
h4 {
font-size: 14px;
padding-left: 10px;
padding-right:10px;
margin: 0;
p {
color: #909090;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
font-size: 14px;
padding-left: 10px;
padding-right:10px;
.contato {
color: #484848;
margin-top: 10px;
.contato button {
margin-left: 10px;
margin-top: -3px;
margin-right: 10px;
CUSTOMIZANDO COMPONENTES
145
CUSTOMIZANDO GRID
As grids, diferentemente das listas, podem conter linhas e colunas. É bem comum
as utilizarmos para diagramar alguma apresentação estruturada de dados e ele-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Customizando Grid
146 UNIDADE III
<ion-content>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<div class=”row”>
<div class=”col”>
<label>Pedidos pendentes</label>
<h2 class=”light”>24</h2>
</div>
<div class=”col”>
<label>Pedidos entregues</label>
<h2 class=”balanced”>125</h2>
</div>
<div class=”col”>
<label>Pedidos cancelados</label>
<h2 class=”assertive”>12</h2>
</div>
</div>
CUSTOMIZANDO COMPONENTES
147
<div class=”col”>
<label>Valor pendente</label>
</div>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<div class=”col”>
<label>Valor recebido</label>
</div>
<div class=”col”>
<label>Valor total</label>
</div>
</div>
<div class=”col”>
Customizando Grid
148 UNIDADE III
</div>
<div class=”col”>
</div>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<div class=”col”>
</div>
</div>
Neste primeiro passo, apenas adicionamos as linhas e colunas da nossa grid. Nas
linhas de valores, adicionamos a classe valores para ser estilizada de forma dife-
rente da primeira. Agora vamos adicionar uma lista com avatar:
<ion-list>
<img src=”img/user1.jpg”>
<div class=”right”>
CUSTOMIZANDO COMPONENTES
149
</div>
<h2>Mario Silva</h2>
</a>
<img src=”img/user1.jpg”>
<div class=”right”>
</div>
</a>
<img src=”img/user3.jpg”>
<div class=”right”>
Customizando Grid
150 UNIDADE III
</div>
<h2>Monica Fransoneze</h2>
</a>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<a class=”item item-avatar”>
<img src=”img/user5.jpg”>
<div class=”right”>
</div>
<h2>José Luiz</h2>
</a>
<img src=”img/user6.jpg”>
<div class=”right”>
CUSTOMIZANDO COMPONENTES
151
</div>
<h2>Maria Vitória</h2>
</a>
</ion-list>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
</ion-content>
Apenas adicionamos um classe para o título da listagem e uma lista com alguns
itens. Nosso app ficou igual a Figura 8.
.pane {
Customizando Grid
152 UNIDADE III
background-color: #3B3C3E;
ion-content h1{
color: #fff;
font-size: 20px;
padding: 10px;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
}
Deixamos nosso app com o fundo escuro e o título branco. Agora vamos sele-
cionar os elementos da grid e aplicar alguns estilos para ter uma visualização
mais coordenada, destacando os itens mais importantes:
.row {
padding: 0;
.col {
margin: 1px;
margin-bottom: 6px;
background-color: #525659;
padding: 10px;
.row label{
color: #9CA0A3;
CUSTOMIZANDO COMPONENTES
153
font-size: 12px;
float: right;
color: #fff;
padding-top: 4px;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
.row h2 {
margin: 0;
font-size: 25px;
.row h2 span {
display: block;
font-size: 14px;
font-weight: 400;
.row.valores h2 {
font-size: 18px;
font-weight: 600;
Customizando Grid
154 UNIDADE III
.title-custom {
color: #8C9093;
font-size: 18px;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
padding-left: 10px;
.item {
background:none;
border-color: #474747;
.item h2 {
color: #8C9093;
.item p {
color: #8C9093;
CUSTOMIZANDO COMPONENTES
155
.right {
float: right;
color: #8C9093;
font-size: 18px;
font-weight: bold;
margin-top: 10px;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
.right .valor {
float: left;
margin-right: 10px;
.right i {
font-size: 40px;
A div com a classe right foi posicionada ao lado direto dos itens.
Customizando Grid
156 UNIDADE III
CUSTOMIZANDO FORMULÁRIOS
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
CUSTOMIZANDO COMPONENTES
157
<ion-content>
<h1>PASSO 1/3</h1>
<div class=”forms”>
<h3>Tipo da viagem?</h3>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
</div>
<div class=”col”>Acompanhado</div>
</div>
Customizando Formulários
158 UNIDADE III
</div>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<i class=”icon ion-ios-location-outline”></i>
</div>
Criamos um título e uma grid com algumas linhas e colunas. Contudo, para
este layout, vamos estilizar a grid para se comportar de forma diferente, na qual
cada coluna será um campo de seleção. Agora vamos adicionar a grid com os
campos de data:
<h4>Data ida</h4>
<div class=”col”>
<input type=”date”>
</div>
</div>
CUSTOMIZANDO COMPONENTES
159
<div class=”col”>
<input type=”time”>
</div>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
</div>
</div>
<h4>Data volta</h4>
<div class=”col”>
<input type=”date”>
</div>
</div>
<div class=”col”>
<input type=”time”>
Customizando Formulários
160 UNIDADE III
</div>
</div>
</div>
Para concluir nossos elementos HTML, vamos adicionar uma lista de checkbox:
<h3>Passeios adicionais</h3>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<ion-list class=”list-custom”>
<label class=”checkbox”>
<input type=”checkbox”>
</label>
Visita ao Corcovado
</ion-item>
<label class=”checkbox”>
<input type=”checkbox”>
</label>
Castelo da Sapolientra
</ion-item>
CUSTOMIZANDO COMPONENTES
161
<label class=”checkbox”>
<input type=”checkbox”>
</label>
</ion-item>
<label class=”checkbox”>
<input type=”checkbox”>
</label>
Visita ao Corcovado
</ion-item>
<label class=”checkbox”>
<input type=”checkbox”>
</label>
Castelo da Sapolientra
</ion-item>
Customizando Formulários
162 UNIDADE III
right”>
<label class=”checkbox”>
<input type=”checkbox”>
</label>
</ion-item>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
</ion-list>
</div>
</ion-content>
Na lista, não vamos customizar muita coisa do padrão do Ionic, apenas ajustes
nas cores. Nosso app ficou igual a Figura 10.
CUSTOMIZANDO COMPONENTES
163
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Para este layout, vamos utilizar dois tipos de fontes diferentes, Pacifico e Lato.
Instale as fontes utilizando o getfont:
Customizando Formulários
164 UNIDADE III
.bar.bar-positive.bar-top {
background-color: #00A5FF;
background-image: none;
.bar-top .title {
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
}
ion-content {
ion-content h1 {
background-color: #00A5FF;
color: #fff;
text-align: center;
font-size: 18px;
font-weight: 800;
CUSTOMIZANDO COMPONENTES
165
-webkit-border-bottom-right-radius: 50%;
-webkit-border-bottom-left-radius: 50%;
-moz-border-radius-bottomright: 50%;
-moz-border-radius-bottomleft: 50%;
border-bottom-right-radius: 50%;
border-bottom-left-radius: 50%;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
padding: 20px;
ion-content h3 {
font-weight: 300;
font-size: 25px;
text-align: center;
color: #595959;
h4 {
color: #595959;
padding-left: 15px;
margin:0;
Customizando Formulários
166 UNIDADE III
Primeiro, definimos a fonte Lato para toda área de conteúdo do aplicativo, depois,
customizamos o h1 para ter os cantos arredondados, unindo-se com o header,
e ajustamos o estilo dos outros títulos. Agora vamos customizar as colunas de
nossa grid para que se comportem como um componente de seleção:
.forms {
padding: 20px;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
}
.row {
padding: 2px;
.col.select {
background-color: #00A5FF;
color: #fff;
border-radius: 15px;
.radio-custom {
background-color: #F2F2F2;
border-radius: 15px;
color: #999999;
.radio-custom .col {
CUSTOMIZANDO COMPONENTES
167
text-align: center;
padding-top: 10px;
padding-bottom: 10px;
Para não ficar colado nas laterais, demos um espaçamento interno em todo for-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
mulário, e ajustamos as cores das colunas. Para a coluna que representa o item
selecionado, foram adicionados alguns estilos próprios para se diferenciar dos
demais. Vamos customizar os campos de entrada de dados do formulário:
.item {
border-radius: 15px;
border-color: #BEBEBE;
margin-bottom: 20px;
.item input {
color: #00A5FF;
.item-input i {
font-size: 25px;
margin-right: 15px;
Customizando Formulários
168 UNIDADE III
color:#BEBEBE;
.item-input input {
padding-right: 0;
.row-input {
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
padding: 0;
.row-input .col {
padding-top: 0;
padding-bottom: 0;
.list-custom .item {
border-radius: 0;
border-left-width: 0;
border-right-width: 0;
.list-custom .item {
CUSTOMIZANDO COMPONENTES
169
color: #00A5FF;
margin: 0;
margin-top: -1px;
background: #00A5FF;
border-color: #00A5FF;
border-color: #00A5FF;
Ajustamos a lista para não ter bordas arredondadas como as demais, e também
ajustamos o estilo do checkbox.
Customizando Formulários
170 UNIDADE III
A disposição criativa dos elementos trazem uma rica experiência visual para
os aplicativos, estes estilos são simples de implementar, mas podem fazer uma
grande diferença quando bem aplicados. No entanto, tenha cuidado, pois se uti-
lizado de forma incorreta, a navegabilidade do aplicativo pode ser totalmente
comprometida (Figura 11).
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
CUSTOMIZANDO COMPONENTES
171
Vamos aos elementos HTML, adicione no header uma classe para ser selecio-
nada no CSS de forma mais fácil:
<ion-pane>
<ion-header-bar class=”bar-transparent”>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<h1 class=”title”></h1>
</ion-header-bar>
A classe bar-transparent será utilizada para deixar nosso header sem cor de
fundo. Agora vamos a parte mais complexa, após o header, adicione o início da
área de conteúdo com seus elementos:
<ion-content class=”no-header”>
<div class=”info-preview”>
<h3 class=”right”>
3/8
</h3>
<h3>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
</h3>
CUSTOMIZANDO COMPONENTES
173
</ion-scroll>
</div>
</div>
gem da área de conteúdo será visível. Criamos uma div com o id preview para ser
mais fácil a seleção do elemento via CSS, perceba que as imagens são declaradas
inline utilizando a propriedade style. Fazemos assim porque em um aplicativo
real, as imagens serão dinâmicas, e estando no HTML podemos manipular pelo
JavaScript, mas não se preocupe com isso nesse momento. Agora vamos adicio-
nar o restante do nossos elementos:
<h4>Filmes</h4>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<img class=”filme” src=”img/filme8.jpg”
height=”80px”>
</ion-content>
</ion-pane>
Adicionamos apenas algumas imagens com a classe filme. Nosso aplicativo está
igual a Figura 12.
CUSTOMIZANDO COMPONENTES
175
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Para este app vamos utilizar as fontes Lato e Poiret One, faça a instalação delas
pelo getfont:
.bar-transparent {
background: none;
.bar-transparent button {
color: #fff;
Apenas deixamos nosso header sem cor de fundo e deixamos nossos botões
brancos. Agora vamos ajustar a área de preview:
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
#preview {
background-size: cover;
height: 60%;
background-position: center;
position: relative;
.info-preview {
width: 100%;
position: absolute;
bottom: 0;
.photo {
width: 70px;
height: 70px;
CUSTOMIZANDO COMPONENTES
177
background-color: #000;
display: inline-block;
margin-left: 6px;
margin-bottom: 0;
background-size: cover;
background-position: center;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
opacity: 0.8;
.photo.selected {
opacity: 1;
.photo:last-child {
margin-right: 6px;
Estilizamos o plano de fundo da div preview para cobrir toda área útil, e dei-
xamos as fotos da galeria com tamanhos únicos, apenas a div que estiver com
a classe selected terá um tratamento diferente com cor branco de borda e sem
transparência. Neste momento, a galeria de fotos ainda não teve o comporta-
mento esperado, vamos ajustar seu scroll:
.wide-as-needed {
overflow: scroll;
white-space: nowrap;
display: inline-block;
width: 100%;
margin-top: 10px;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
.scroll {
min-width: 100%;
ion-content {
background-color:#F0F2F5;
ion-content h2 {
color: #fff;
font-weight: bold;
margin: 0;
margin-left: 20px;
CUSTOMIZANDO COMPONENTES
179
h3.right {
float: right;
margin: 0;
margin-right: 20px;
}
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
ion-content h3 {
color: #fff;
font-size: 16px;
margin: 0;
margin-left: 20px;
h4 {
color: #2E3037;
padding-left: 10px;
padding-right: 10px;
margin-bottom: 5px;
margin-top: 20px;
p {
color: #2E3037;
padding-left: 10px;
padding-right: 10px;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
.filme {
margin-left: 10px;
Aplicamos diferentes estilos para cada tipo de título e adicionamos uma pequena
margem entre cada capa de filme apresentada.
CONSIDERAÇÕES FINAIS
Customizar aplicativos com CSS não é difícil, e muito menos complicado, você
precisa entender o necessário sobre CSS e o essencial sobre UX/UI Design. Nesta
unidade, praticamos o essencial sobre a customização de componentes, criando
alguns aplicativos ricos em elementos visuais.
Estudar e entender as diferentes formas de se utilizar dos atributos do CSS
não pode ser visto e compreendido em um único momento, pois a beleza de uma
aplicação, tanto web quanto mobile, está em seus componentes e em sua forma
CUSTOMIZANDO COMPONENTES
181
Considerações Finais
182
2. Quando criamos um novo aplicativo, a fonte que é utilizada sempre será a fonte
padrão do dispositivo onde o aplicativo está sendo executado. Com base nesta
afirmação, assinale a alternativa que corresponde ao comando que faz a ins-
talação de uma nova fonte em um novo aplicativo:
a. getfont install “Ubuntu” --ionic
b. getfont “Ubuntu” --ionic
c. getfont “Ubuntu”
d. getfont add “Ubuntu”
e. getfont add “Ubuntu” --ionic
e. <button class=”button-noBorder”></button>
183
5. Muito aplicativos que tem o apelo visual como um requisito indispensável uti-
lizam o header com fundo transparente. Sabendo disso, assinale a alternati-
va que apresente o processo utilizado nesta unidade para deixar o header
transparente:
a. Foi criado um novo componente e removido o componente de header do
Ionic.
b. Foi criado uma nova classe e no CSS removido o fundo.
c. Não foi utilizado header.
d. Foi utilizado uma classe do próprio Ionic para remover o fundo.
e. Foi criado um novo header com um subheader transparente.
184
CSS3
Maurício Samy Silva
Editora: Novatec
Sinopse: CSS3 ultrapassou o status de proposta de
uma tecnologia que prometia revolucionar a forma
como estilizamos documentos para a web e deve
obrigatoriamente fazer parte do dia a dia dos designers
e desenvolvedores web. Muitas das funcionalidades das
CSS3 estão desenvolvidas o bastante para ser empregadas
em fase de produção, quer com suporte nativo, quer com uso de prefixos proprietários. Outras
tantas estão sendo implementadas em navegadores modernos, possibilitando o seu estudo e o
desenvolvimento de suítes para estudos. Saber o que se pode e o que não se pode, o que se deve e o
que não se deve usar das CSS3 é um conhecimento indispensável.
Material Complementar
186
REFERÊNCIAS
1. E.
2. B.
3. A.
4. C.
5. B.
Professor Esp. Fábio Rogério da Silva José
IV
CRIANDO COMPONENTES
UNIDADE
COMPLEXOS E
EMPACOTANDO APLICATIVO
Objetivos de Aprendizagem
■■ Aprender a criar novos componentes.
■■ Empacotar o aplicativo final.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Ícones e novos componentes
■■ Empacotando o aplicativo
191
INTRODUÇÃO
customizados. A vantagem do Ionic é que você pode muito bem estender seus
componentes, ou seja, melhorá-los e adaptá-los para seu cenário.
E depois que nosso aplicativo está pronto? Como fazer com que ele funcione
em nosso smartphone ou tablet (device)? Nesta unidade, vamos aprender tam-
bém como preparar o ambiente para o processo de empacotamento do aplicativo,
tanto para o sistema operacional Android, quanto para o sistema operacional
do iPhone e iPad (iOS).
Para cada sistema operacional móvel, como Android, iOS, Windows Phone
etc., temos diferentes formas de empacotar a aplicação. Sendo assim, vamos estu-
dar e praticar apenas nas duas mais utilizadas, Android e iOS, entretanto, é de
suma importância que você tenha um entendimento sobre o empacotamento
de aplicativos móveis para outros sistemas operacionais.
Recomenda-se que, tanto o processo de empacotamento, quanto o processo
de teste, sejam feitos em diferentes sistemas operacionais móveis. Isso porque,
mesmo utilizando um framework como Ionic para automatizar tarefas e criar
compatibilidade de componentes entre versões de S.O, você pode ter proble-
mas quando estas soluções forem de fato executadas em devices nativos. Por
isso, tenha em mente que sempre haverá a necessidade de testar sua aplicação
em devices reais antes de ir de fato para produção.
Introdução
192 UNIDADE IV
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
getfont ‘https://fonts.googleapis.com/
icon?family=Material+Icons|Ubuntu:300,400,700’
--ionic
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<ion-pane>
<ion-header-bar class=”bar-assertive”>
<i class=”material-icons”>menu</i>
</button>
<h1 class=”title”></h1>
<i class=”material-icons”>chat_bubble_
outline</i>
</button>
</ion-header-bar>
No site do material design, é possível ver quais ícones podem ser utilizados.
<div id=”profile”>
<div class=”photo”>
</div>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<h2>Linus Torvalds</h2>
<h3>Criador do Linux</h3>
<div class=”row”>
</div>
</div>
E por fim, vamos adicionar o elemento timeline que ainda não existe, mas vamos
implementá-lo em breve:
<div class=”timeline”>
<div class=”event”>
<div class=”info”>
<i class=”material-icons”>access_time</
i>
12:00am
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
</div>
<div class=”info”>
<i class=”material-icons”>date_range</i>
18/11/2011
</div>
</div>
</div>
<div class=”event”>
<div class=”info”>
<i class=”material-icons”>access_time</
i>
8:30am
</div>
<div class=”info”>
<i class=”material-icons”>date_range</i>
22/11/2011
</div>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
</div>
</div>
<div class=”event”>
<p class=”item-image”>
<img src=”img/event1.jpg”>
</p>
<div class=”info”>
<i class=”material-icons”>access_time</
i>
22:11pm
</div>
<div class=”info”>
<i class=”material-icons”>date_range</i>
12/12/2011
</div>
</div>
</div>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
<div class=”event”>
<div class=”info”>
<i class=”material-icons”>access_time</
i>
14:22pm
</div>
<div class=”info”>
<i class=”material-icons”>date_range</i>
15/12/2011
</div>
</div>
</div>
</div>
</ion-content>
</ion-pane>
Criamos uma div com a classe timeline e outras divs filhas com a classe event.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Neste caso, cada evento é um item na listagem do componente. Até o momento
nosso app está como na Figura 2.
font-family: Ubuntu;
h2 {
color:#fff;
margin:0;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
h2 + h3 {
color:#ffb2b9;
margin:0;
font-weight:800;
font-size:22px;
.pane {
background-color:#687586;
.material-icons {
margin-top: 4px;
.bar.bar-assertive {
border-color:#ff6861;
background-color:#ff6861;
background-image: none;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
#profile {
background-color:#ff6861;
color:#fff;
text-align:center;
#profile .photo {
background-color:#ed6b63;
display:inline-block;
border-radius:50%;
padding:6px;
padding-bottom:0;
#profile img {
width:150px;
border-radius:50%;
.row {
margin-top:20px;
padding:0;
.col {
padding:10px;
font-weight:800;
font-size:20px;
.col span {
display:block;
font-weight:300;
font-size:16px;
.timeline {
padding-left:20px;
padding-top:10px;
background: #687586;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
background: linear-gradient(180deg,
transparent, #5b6776, transparent);
background-position: 45px;
background-repeat: repeat-y;
Primeiro adicionamos uma linha que servirá de base para a timeline. Vamos
ajustar o componente card:
.card {
border-radius:6px;
.card:before {
content:””;
width: 0;
height: 0;
position:absolute;
margin-left:-20px;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Os cards ficaram com as bordas mais arredondadas e adicionamos uma seta para
a esquerda. Vamos criar os estilos para as marcações:
.mark {
background-color:#2bb9bb;
border-radius:50%;
padding:10px;
color:#fff;
float:left;
margin-right:25px;
margin-top:-5px;
.mark-profile {
width:52px;
border-radius:50%;
float:left;
margin-right:25px;
margin-top:-5px;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
}
.event:last-child {
background-color:#687586;
.card .info {
color:#cccccc;
font-weight:300;
float:left;
margin-right:10px;
.card .info i {
font-size:14px;
float:left;
EMPACOTANDO O APLICATIVO
ANDROID
Empacotando o Aplicativo
206 UNIDADE IV
Developer2. Role até o final da página e baixe apenas o SDK para linha de comando,
como mostrado na Figura 3. Escolha o seu sistema operacional e faça o download.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 3 - Print do site de download
Fonte: o autor.
Para usuários Linux o processo é bem parecido, com algumas diferenças nas
definições de variáveis de ambiente. Em nosso material vamos abordar a insta-
lação do Android SDK em ambiente Windows.
Para usuários do Windows podemos usar o instalador, no qual já se verifica
a existência o Java JDK instalado, e instala o SDK em uma determinada pasta.
Execute o instalador e siga os passos como exibido na Figura 4.
Se você tiver o Java JDK instalado, o instalador irá seguir para a instalação do
Android SDK, caso contrário, será exibida uma tela solicitando a instalação do
Java JDK (Figura 5).
Empacotando o Aplicativo
208 UNIDADE IV
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 6 - Print do passo 1 do download do SDK
Fonte: o autor.
Empacotando o Aplicativo
210 UNIDADE IV
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 10 - Print da instalação do Java
Fonte: o autor.
Empacotando o Aplicativo
212 UNIDADE IV
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 14 - Print da instalação do Android
Fonte: o autor.
Empacotando o Aplicativo
214 UNIDADE IV
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 18 - Print da instalação do Android
Fonte: o autor.
Vamos agora adicionar algumas variáveis de ambiente para que o Ionic encon-
tre o local em que está instalado o Android SDK. Entre nas propriedades do seu
computador, vá em Configurações avançadas do sistema e depois em Variáveis
de Ambiente (Figura 21).
Empacotando o Aplicativo
216 UNIDADE IV
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 21 - Print da configuração das variáveis de ambiente
Fonte: o autor.
Empacotando o Aplicativo
218 UNIDADE IV
Se o build ocorrer de maneira correta, uma mensagem parecida com essa será
exibida em seu terminal:
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
BUILD SUCCESSFUL
IOS
Para gerar o aplicativo final para a plataforma iOS (.ipa), utilizando o Ionic
Framework, precisamos estar em um ambiente Mac, ou seja, em uma máquina
com o sistema operacional iOS.
Para compilar nosso projeto, vamos precisar do ios-sim, um módulo NPM escrito
em JavaScript rodando via NodeJS responsável por rodar aplicações via linha de
comando direto no emulador iOS.
Para instalar digite:
Este processo irá compilar nosso aplicativo e poderemos abri-lo via Xcode para
emular ou rodar em um device com iOS.
Dentro da pasta platforms/ios foi criado um arquivo AppListImage.xcode-
proj, que é o arquivo inicializador do projeto em Xcode (Figura 23).
Empacotando o Aplicativo
220 UNIDADE IV
De um duplo clique neste arquivo e o projeto será aberto no Xcode (Figura 24).
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
está “iPhone 6s Plus”, e clicar no ícone play.
Caso você escolha um dos emuladores, este processo irá executar o emula-
dor e em seguida instalar e rodar o aplicativo, como exibido na Figura 25.
Você pode configurar seu aplicativo para rodar em emuladores, tanto para Android
quanto para iOS, mas sempre é importante executar em um device para garan-
tir o funcionamento correto.
CONSIDERAÇÕES FINAIS
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Considerações Finais
222 UNIDADE IV
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
4. Para testar nossos apps sem precisar instalar em um device utilizamos no coman-
do, ionic server. Sabendo disso, assinale a alternativa correta para o comando
de compilação e execução do app no device.
a. ionic build android
b. ionic run android
c. ionic start android
d. ionic install android
e. ionic add android
5. O CSS3 traz inúmeros recursos para trabalhar com sombra, degradê e efeitos de
animação. Com base no app de timeline que criamos, assinale a alternativa
correta para a propriedade do background no CSS que cria um degradê:
a. gradient-linear
b. effect-gradient
c. insert-gradient
d. gradient-effect
e. linear-gradient
225
1. A.
2. B.
3. B.
4. B.
5. E.
Professor Esp. Fábio Rogério da Silva José
TRABALHANDO COM
V
UNIDADE
RECURSOS NATIVOS
Objetivos de Aprendizagem
■■ Aprender a instalar plugins nativos do Cordova
■■ Entender a utilização do AngularJS.
■■ Aprender a utilizar recursos nativos como câmera, GPS e áudio.
■■ Aprender a salvar dados off-line.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Plugins e Integração
■■ GPS, Spinner e Google Maps
■■ Gravação e reprodução de áudio
■■ Salvando dados offline com SQLite
231
INTRODUÇÃO
Olá caro(a) aluno(a), conhecemos até agora o essencial para criar aplicativos
híbridos ricos em recursos visuais, porém, não criamos uma interação entre
nossos aplicativos e os recursos nativos do dispositivos como: tirar uma foto,
recuperar a localização atual do usuário através do GPS, listar os contatos do dis-
positivo, utilizar a vibração entre outros. Mas como faremos para integrar nosso
aplicativo com recursos nativos? Essa pergunta será respondida nesta unidade.
Na unidade I entendemos que o Ionic Framework opera por cima do Apache
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Introdução
232 UNIDADE V
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
PLUGINS E INTEGRAÇÃO
Existem mais de mil plugins do Cordova que podemos utilizar em nossos apli-
cativos e neste livro vamos utilizar os principais para que você possa entender o
processo de instalação e utilização.
Como já sabemos o Ionic é um framework criado para facilitar o desenvol-
vimento de aplicações mobile híbridas utilizando como base o Apache Cordova.
Também sabemos que o Ionic utiliza a linguagem de programação JavaScript
e o framework AngularJS para fazer as interações entre elementos e regras de
negócio do aplicativo, porém, para utilizar alguns plugins do Cordova, é reco-
mendável utilizar uma extensão dos plugins do Cordova para o AngularJS,
conhecida como ngCordova.
itens já instalados.
No seu terminal digite o comando a seguir (sem quebra de linha) para criar
um novo aplicativo com o nome AppCamera.
Até agora, em nosso livro, conseguimos testar nossos aplicativos direto pelo
browser. Porém, nesta etapa do desenvolvimento, precisamos de um aparelho
(device) pois muitos dos plugins nativos precisam de interação com o device, e
rodando o app via browser tais recursos não irão funcionar.
Plugins e Integração
234 UNIDADE V
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Se você seguiu os passos corretos na unidade anterior, no tópico de preparar o
ambiente para empacotar, então você está pronto(a) para rodar os aplicativos
que vamos criar neste módulo e testar os recursos nativos.
Vamos verificar se o aplicativo que criamos está correto até o momento. Para
isso, rode o aplicativo em um device com o comando a seguir.
Plugins e Integração
236 UNIDADE V
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 2 - Estrutura do aplicativo com novo template
Fonte: o autor.
Na pasta plugins é possível ver todos os plugins instalados para nosso aplica-
tivo, e, por padrão, alguns plugins já vem pré-instalados. Na pasta js podemos
ver dois novos arquivos, que são:
1. config.js: responsável por configurar nossas telas, veja que um trecho de
código está comentado, isso porque nosso app só tem uma tela, ou seja,
não precisa configurar novas neste momento.
ANGULARJS
Lembre-se que iremos utilizar apenas o mais básico do AngularJS para nossos
aplicativos para sua compreensão, mas não deixe de ler mais sobre este framework
e utilizar seus enormes benefícios para que seus aplicativos fiquem mais perfor-
máticos e dinâmicos.
Em nossos aplicativos, as Views serão nossas telas em HTML, onde poderá
ter botões, campos de formulários, listas, card entre outros. Toda nossa mani-
pulação de eventos e estados, como clique em um botão ou quando uma foto
for tirada, será feita em nosso Controller.
Plugins e Integração
238 UNIDADE V
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Após a conclusão da instalação você poderá ver uma nova pasta dentro da pasta
de plugins do seu app, isso significa que a instalação foi bem sucedida. Agora
precisamos criar um botão em nossa View e implementar a regra para quando
o botão for clicado.
Primeiro, vamos ao código da nossa view, onde iremos criar um botão com um
evento de clique, que quando clicado será executada a função tirarFoto() do
nosso controller. Iremos criar também um card para ser exibida nossa foto após
capturada, sendo assim, o código da nossa view ficará igual a Figura 3.
Plugins e Integração
240 UNIDADE V
Veja como é simples utilizar um recurso tão poderoso como capturar uma
foto da câmera e interagir com seu app, agora, pense em inúmeros aplicati-
vos que existem cuja lógica principal é capturar fotos e fazer algo com ela.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
para interagir com o GPS
do device, iremos utilizar
o mais simples com o obje-
tivo de exibir nossa posição
atual em um mapa.
Como sempre, pre-
cisamos nos preocupar
com a melhor experiência
do usuário, dessa forma,
nosso aplicativo irá, assim
que for aberto, exibir uma
mensagem “Obtendo sua
localização atual…”, e assim que for obtido, podemos remover a mensagem e
criar o mapa com a localização.
Crie um novo aplicativo chamado AppLocalizacao utilizando o template
customizado.
Vamos instalar também o plugin de Spinner, que será responsável por bloquear
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Na Figura 5 você pode ver as alterações em nossa View, que é apenas a criação de
um elemento iframe no qual será exibido nosso mapa. Com o AngularJS, existem
formas mais eficientes de exibir um mapa ao capturar a localização, mas como
nosso foco é em compreender da forma mais simples possível a utilização dos
plugins, iremos utilizar uma abordagem mais ligada ao JavaScript.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Agora vamos instalar o plugin de mídia, que tem como objetivo utilizar os recur-
sos nativos de media. Se você estiver desenvolvendo no ambiente de iOS veja a
documentação do plugin, pois algumas configurações são diferentes.
Agora vamos implementar nossa View com 3 botões: um para gravar, outro
para parar e um terceiro para escutar o áudio gravado. Na Figura 7 podemos
ver que criamos os botões e estamos utilizando a diretiva ng-show para contro-
lar o momento que cada botão será exibido.
Essas variáveis que estão informadas no ng-show serão criadas no control-
ler, de forma que a nossa view será avisada quando o valor delas forem alterados,
para assim fazer as devidas alterações em seu estado de visível/invisível.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 7 - Código da view index.html do AppGravador
Fonte: o autor.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
SALVANDO DADOS OFFLINE DOM SQLITE
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 9 - Código view index.html do AppLembrete
Fonte: o autor.
No segundo passo vamos criar o método que o botão salvar irá executar quando
for clicado, como exibido na Figura 11.
No terceiro passo vamos criar a função que o botão excluir irá executar ao ser
clicado, como exibido na Figura 12.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 12 - Código controller.js do AppLembrete passo 3
Fonte: o autor.
E por fim, vamos criar a função listar(), que é executada tanto pela função sal-
var(), quando insere um novo registro, quanto pela função excluir(). Na Figura
13 podemos ver a conclusão do código do controller.js. Na linha 39 a função de
listar também está sendo executada, isso é necessário pois assim que o app for
aberto, devem ser listado os registros que já foram salvos no banco de dados.
CONSIDERAÇÕES FINAIS
Até aqui aprendemos como instalar, configurar e utilizar alguns plugins no Ionic
Framework, mas seus estudos não podem parar nesse momento. Crie novos
aplicativos utilizando os demais plugins que podem ser vistos no site oficial do
ngCordova ou utilize um dos diversos plugins disponíveis para Cordova, o impor-
tante é você praticar, lembre se que a prática leva à perfeição.
Você pode também estudar como enviar seus dados salvos no dispositivos
para uma API, para isso você deve estudar sobre a diretiva $http do AngularJS,
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Considerações Finais
252
1. Os plugins nativos foram criados para serem utilizados no Cordova, porém, nos
aplicativos que criamos utilizamos o ngCordova. Com base nessa afirmação, as-
sinale a alternativa que apresente o motivo pelo qual devemos utilizar o
ngCordova:
a. Porque aplicativos híbridos devem sempre utilizar esta biblioteca.
b. Sem o ngCordova os plugins nativos não funcionam em devices com sistema
operacional iOS.
c. Utilizamos o ngCordova pelo fato que os aplicativos implementados em Ionic
utilizam o AngularJS.
d. ngCordova é utilizado apenas para plugins de câmera e GPS.
e. Devemos utilizar o ngCordova para que os dados possam ser salvos offline
com SQLite.
Material Complementar
REFERÊNCIAS
1. C.
2. E.
3. D.
4. D.
5. B.
CONCLUSÃO