#1 Ionic Framework - Essencial PDF
#1 Ionic Framework - Essencial PDF
#1 Ionic Framework - Essencial PDF
Este ebook é o primeiro de uma série de ebooks que irão abordar o Ionic Framework,
neles você irá encontrar, de forma simples e objetiva, explicações, exemplos e muito
código sobre o desenvolvimento de aplicativos móveis híbridos. Cada ebook irá abordar
um tema específico, exceto este primeiro que é a base de aprendizado para os demais
assuntos.
Todos os ebooks elaborados por mim serão gratuitos, pois o objetivo central destes
materiais é o compartilhamento de conhecimento e disseminação deste framework
fantástico.
Público alvo
Este ebook foi escrito para você que está começando no mundo do desenvolvimento de
aplicativos móveis e tem interesse em aprender sobre uma tecnologia híbrida. Não
iremos abordar padrões de desenvolvimento e não vamos utilizar lógicas de
programação complexas para facilitar o aprendizado e ter um público mais amplo, tendo
em vista que iniciantes também no mundo da programação podem estar lendo este
ebook.
Este material não deverá ser seu único ponto de referência e guia, pois existem outros
ebooks, livros e blogs que falam sobre Ionic Framework e podem ampliar seu
conhecimento.
Sobre o autor
Fábio Rogério da Silva José , conhecido como Fábio Rogério SJ nas redes sociais, é
desenvolvedor de aplicações web e mobile desde quando o Internet Explorer 7 erá um
pesadelo e desenvolver aplicativos híbridos com tecnologias web era um trabalho árduo,
ou seja, desde 2007.
1
Sumário
Introdução
4
Apache Cordova 4
AngularJS 5
ngCordova 5
Ionic 2.0 5
Instalando ambiente
6
NodeJS 6
Git 6
Sublime Text 7
config.xml 10
www 11
Componentes
12
Header 12
Content 14
Footer 15
SubHeader e SubFooter 16
Cores 16
Icons 17
Buttons 17
List 20
Cards 25
2
Forms 28
Toggle 30
Checkbox 31
Radio Buttons 32
Range 33
Select 34
Tabs 36
Grid 38
Empacotando o aplicativo
42
Android 42
iOS 48
Próximo passo 50
3
Introdução
Desenvolver aplicativos móveis geralmente é divertido e, em muitos casos, uma tarefa
complexa dependendo dos requisitos do projeto. Escolher qual tecnologia utilizar é um
ponto altamente discutido nas comunidades e é a etapa principal do ciclo do
desenvolvimento, pois se você escolher a tecnologia “errada” o custo para migrar toda a
aplicação pode ser alto. Acredito que não existe uma tecnologia “errada”, mas sim
pessoas que não dominam tal tecnologia.
O Ionic é um
framework open source e um dos
frameworks
, para desenvolver aplicativos
híbridos, mais utilizado no mundo, tendo mais de 23 mil stars
e mais de 4 mil
forks
no
Github.
Sua premissa é utilizar tecnologias web, como HTML5, CSS e JavaScript, para
desenvolver aplicativos móveis híbridos, ou seja, aplicativos que usam tecnologias web e
também nativas. Se você sabe criar um site você conseguirá criar um aplicativo sem
muito esforço.
O Ionic utiliza como base o projeto Apache Cordova e dispõe de uma seria de
componentes e um CLI ( command-line interface)completo para criar, testar e publicar
aplicativos com apenas alguns comandos.
Apache Cordova
O Apache Cordova também é open source e é utilizado pelo Ionic para acessar as
funcionalidades nativas dos aparelhos móveis como acelerômetro, câmera e geo
localização. Ele também tem como requisito gerar o aplicativo para diferentes
plataformas como Android, iOS, Windows Phone, blackberry entre outros.
4
Hoje a maioria das plataformas e frameworks para criação de aplicativos móveis híbridos
utiliza como base o Apache Cordova, entre eles estão: Adobe PhoneGap, Monaca, Onsen
UI, Visual Studio, Taco, Telerik e Ionic. Veja mais detalhes em
http://cordova.apache.org.
AngularJS
O Ionic utiliza o AngularJS para controlar os objetos e configurar as telas, que chamamos
de rotas, do aplicativo. Não se preocupe iremos ver isso passo a passo.
ngCordova
Como já foi dito anteriormente o Ionic utiliza o Apache Cordova para disponibilizar 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, não se preocupe pois no futuro você irá entender.
Ionic 2.0
No momento em que foi escrito este ebook o Ionic havia lançado recentemente uma
nova versão do seu framework, com várias melhorias e com a implementaçã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, sendo assim irei aguardar a estabilidade desta nova versão e tratar o conteúdo em
um novo ebook, focado apenas no Ionic 2.0.
5
Instalando ambiente
Todos os comandos do Ionic, como criar um novo projeto, testar e distribuir, são feitos
direto no terminal através de um CLI ( command-line interface ) chamado Ionic CLI. O
Ionic CLI utiliza o NodeJS para executar tarefas e o Git para baixar alguns pacotes.
Para instalar o Ionic Framework você precisa ter instalado o NodeJS, Git e um editor de
códigos.
O Ionic pode ser instalado em Windows, Linux ou Mac, os passos seguintes são os
mesmos para os três sistemas operacionais.
NodeJS
Após baixado abra o executável e siga os passos de instalação até aparecer a tela de
instalação concluída. Juntamente com o NodeJS é instalado o NPM ( Node Package
Manager), que é o gerenciador de pacotes dos módulos escritos em JavaScript utilizando
o NodeJS.
Git
6
Após baixado siga os passos e deixe as configurações padrões de instalação até concluir.
Sublime Text
Sublime Text é um editor de código simples, rápido e eficiente, porem este passo não é
obrigatório caso você já utilize um outro editor. Para baixar o Sublime Text acesse o link:
https://www.sublimetext.com/3 .
Com o NodeJS e Git instalado vamos instalar o Cordova e o Ionic, o processo é bem
simples e consiste em apenas um comando, pois vamos utilizar o NPM para fazer a
instalação.
npm install g cordova ionic
Este processo pode demorar alguns minutos dependendo de sua conexão. Ao concluir
digite o comando abaixo para verificar se a instalação foi efetuada com sucesso:
ionic version
http://fabiorogeriosj.com.br/desenvolvendo-aplicativos-mobile-ionic-post-1.html
7
Criando o primeiro app
O Ionic disponibiliza alguns
templates
de projetos, ou seja, aplicativos exemplos prontos
para ser editados, isso facilita para não precisar criar todos os arquivos manuais. Os
templates disponíveis são:
ionic start PrimeiroApp blank
Create an ionic.io account to send Push Notifications and use the Ionic
View app?
(Y/n):
n
8
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 . Você verá
localhost
seu aplicativo executando no navegador.
9
Estrutura dos projetos Ionic
Quando criamos um novo aplicativo, o Ionic utiliza o Cordova para cria a estrutura base
do aplicativo já com o
template escolhido, pois como dito anteriormente o Ionic utiliza o
Cordova como base para realizar algumas tarefas.
Vamos discutir cada arquivo no seu devido momento, por enquanto precisamos apenas
conhecer o config.xml e a pasta www.
config.xml
Se você estiver utilizando o Sublime Text abra seu projeto e verifique o arquivo
config.xml:
10
A segunda linha define o pacote do projeto e a versão do seu aplicativo, você precisará
trocar esta versão toda vez que for disponibilizar uma nova versão do seu aplicativo nos
marketplaces como Play Store e Apple Store. Veremos mais detalhes de como publicar
em outro momento.
<widget id="com.ionicframework.primeiroapp117395" version="0.0.1" …
Da linha três até a linha nove podemos ver o nome do aplicativo, que ira aparecer nos
atalhos do
device
, a descrição e os dados do altor.
www
Nesta pasta wwwvocê irá encontrar os arquivos HTML/CSS e JavaScript do seu aplicativo
e todos os arquivos contidos, ou criados por você, nesta pasta poderão ser utilizados
pelo seu aplicativo. Vamos entender a estrutura que o Ionic criou dentro desta pasta:
www
├── css
│ └── style.css
├── img
│ └── ionic.png
├── js
│ └── app.js
└── lib
│ └── ionic
└── index.html
11
Componentes
O Ionic Framework disponibiliza diversos componentes para criar seu aplicativo, estes
componentes nada mais são que classes em CSS para renderizar da melhor forma seu
elemento em HTML. Você pode adicionar mais atributos em CSS nos componentes ou
até mesmo criar seu próprio componente.
O resultado 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
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 modificar 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 que não gere confusão nas pastas.
cd ..
12
Para criar, entrar na pasta e rodar um novo app digite:
ionic start appHeader blank
cd appHeader
ionic serve
<ionheaderbar
class
=
"barpositive">
<h1
class
=
"title"
>
App Exemplo 1
</h1>
</ionheaderbar>
Alteramos o estilo do Header e alteramos o seu título. Veremos como adicionar botões
na sessão Buttons.
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 apresentado clique nos
três pontinhos e escolha a visualização
Dock to right
, para que seu terminal fique ao lado
direito da pagina que é exibida.
13
Por padrão os títulos em Android ficão ao lado esquerdo, já no iOS ao centro, porem é
possível forçar o título ficar no centro em ambos sistemas adicionado o atributo
aligntitle="center" no componente header:
<ionheaderbar
class
=
"barpositive"
aligntitle
=
"center"
>
<h1
class
=
"title"
>
App Exemplo 1
</h1>
</ionheaderbar>
Content
Content é a área de conteúdo do Ionic, apenas o que estiver dentro deste elemento irá
receber rolagem, ou seja, o Header é fixo no topo e o Content utiliza o restante da
página, caso tenha mais elementos do que pode ser exibido na interface ele irá criar uma
barra de rolagem.
<body
ngapp
=
"starter">
<ionpane>
<ionheaderbar
class
=
"barpositive">
<h1
class
=
"title"
>
App Exemplo 1
</h1>
</ionheaderbar>
<ioncontent
class
=
"padding"
>
<h1>
Exemplo de conteúdo Ionic
</h1>
<h2>
Apenas uma demonstração da rolagem
</h2>
<h3>
As linhas abaixo são exemplos
</h3>
<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">
14
<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>
</ioncontent>
</ionpane>
</body>
Footer
<ionfooterbar
class
=
"barbalanced">
<div
class
=
"title"
>
Rodapé do app
</div>
</ionfooterbar>
15
SubHeader e SubFooter
Bastante utilizado para combinar botões de ação, o SubHeader e SubFooter também são
fixos e ficam como secundários, ou seja, abaixo do Header, para o SubHeader e a cima do
Footer, para o SubFooter, altere seu Header e Footer seguindo o código abaixo:
...
<ionpane>
<ionheaderbar
class
=
"barpositive">
<h1
class
=
"title"
>
App Exemplo 1
</h1>
</ionheaderbar>
<ionheaderbar
class
=
"barsubheader bardark">
<h1
class
=
"title"
>
SubHeader
</h1>
</ionheaderbar>
<ioncontent
class
=
"padding">
...
</ioncontent>
<ionfooterbar
class
=
"bar barbalanced">
<div
class
=
"title"
>
Rodapé do app
</div>
</ionfooterbar>
<ionfooterbar
class
=
"barsubfooter barassertive">
<div
class
=
"title"
>
Rodapé secundário
</div>
</ionfooterbar>
</ionpane>
...
Cores
O Ionic vem com um conjunto de cores e uma nomenclatura onde podemos ver abaixo:
16
Podemos alterar as cores conforme o layout desejado e é interessante utilizar uma
nomenclatura para facilitar o uso dessas classes.
A maioria dos componentes podem ser informados qual tema de cor utilizar, por
exemplo o Header e Footer podemos adicionar a classe barNOMETEMA. Para um
elemento título, como H1, H2, etc, podemos adicionar apenas o nome da classe.
Icons
Ionic dispõe de um coleção de ícones baseado em fonte open source, com mais de 500
ícones para ser utilizado em seu aplicativo. Para utilizar basta adicionar a classe do ícone
desejado, que pode ser encontrado no site http://ionicons.com , em um elemento
<i></i> :
<i
class
=
"icon ionstar"
></i>
No site
ionicons ao clicar sobre um determinado ícone você verá a classe que deve ser
adicionado no elemento.
Buttons
ionic start appButtons blank
<button
class
=
"button buttonassertive"
>
Primeiro botão
</button>
É possível determinar que o componente ocupe 100% da largura da tela adicionando a
classe
buttonblock, ou se for utilizado em um formulário, por exemplo, e deseja que
17
seja completo, ou seja, sem bordas arredondadas nas laterais pode utilizar a classe
buttonfull:
<button
class
=
"button buttonassertive
buttonblock
">
Primeiro botão
</button>
Os Buttons tem classes para tratar botões de diferentes tamanhos como pequenos,
normais e grandes:
<button
class
=
"button
buttonsmall
buttonbalanced">
Botão pequeno
</button>
<button
class
=
"button buttondark">
Botão normal
</button>
<button
class
=
"button
buttonlarge
buttonroyal">
Botão grande
</button>
Outro estilo bem utilizado é botão com apenas bordas ou apenas textos:
<button
class
=
"button buttonoutline buttonpositive">
Botão apenas borda
</button>
<button
class
=
"button buttonclear buttonpositive">
Botão apenas texto
</button>
Porem 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 diferente
formas os botões com os ícones, basta adicionar o nome da classe do ícone desejado:
<button
class
=
"button iconleft ionhome">
Home
</button>
<button
class
=
"button iconleft ionstar buttonpositive">
Favoritos
</button>
<button
class
=
"button iconright ionchevronright buttoncalm">
Saiba mais
</button>
<button
class
=
"button iconleft ionchevronleft buttonclear buttondark">
Voltar
</button>
<button
class
=
"button icon iongeara"
></button>
<button
class
=
"button buttonicon icon ionsettings"
></button>
<button
class
=
"button buttonoutline iconright ionnavicon buttonbalanced">
Ações
18
</button>
O Header e Footer também aceitam botões e você apenas precisa adicionar antes, ou
title
depois, do elemento para deixar a esquerda ou à direita:
<ionheaderbar
class
=
"barbalanced">
<button
class
=
"button icon ionnavicon"
></button>
<h1
class
=
"title"
>
AppButtons exemplos
</h1>
<button
class
=
"button"
>
Editar
</button>
</ionheaderbar>
<ionheaderbar
class
=
"barbalanced">
<button
class
=
"button
buttonicon
icon ionnavicon"
></button>
<h1
class
=
"title"
>
AppButtons exemplos
</h1>
<button
class
=
"button
buttonclear
"
>
Editar
</button>
</ionheaderbar>
E por fim, na área de conteúdo, é possível criar um barra de botões, onde eles ocupam
100% da largura da página e divide o tamanho de cada botão por igual:
<div
class
=
"buttonbar">
<button
class
=
"button buttondark"
>
Botão 1
</button>
<button
class
=
"button buttondark"
>
Botão 2
</button>
<button
class
=
"button buttondark"
>
Botão 3
</button>
</div>
19
List
O componente List é uma lista de itens e é muito comum sua utilização em aplicativos
móveis, e podem conter textos simples, botões, ícones, rótulos e imagens. Crie um novo
aplicativo chamado appList:
ionic start appList blank
Na área de conteúdo adicione um título (H1) e um subtítulo (H2), em seguida crie a lista
(ion-list) com cinco elementos de item (ion-item). Cada elemento tem um título (H2) e
um parágrafo (p). Vamos ao código:
<ioncontent
class
=
"padding">
<h1>
As cinco cidades mais tops para se viver!
</h1>
<h4>
Segundo site WalletHub.com
</h4>
<ionlist>
<ionitem>
<h2>
Colorado Springs, CO
</h2>
<p>
Colorado Springs é uma cidade norteamericana, localizada no estado do
Colorado, no Condado de El Paso.
</p>
</ionitem>
<ionitem>
<h2>
Denver, CO
</h2>
<p>
Denver é a capital, a cidade mais populosa e um dos 64 condados do estado
norteamericano do Colorado.
</p>
</ionitem>
<ionitem>
<h2>
Denver, CO
</h2>
<p>
Omaha é uma cidade localizada no estado americano do Nebraska, no Condado
de Douglas.
</p>
</ionitem>
<ionitem>
<h2>
Tampa, FL
</h2>
<p>
Tampa é uma cidade localizada na costa leste do estado norteamericano da
Flórida, no condado de Hillsborough, do qual é sede.
</p>
</ionitem>
<ionitem>
<h2>
San Diego, CA
</h2>
<p>
San Diego é uma cidade dos Estados Unidos localizada no sul do estado da
Califórnia.
</p>
</ionitem>
</ionlist>
</ioncontent>
O Ionic tem algumas tratativas fixas para as listas e, quando necessário, é preciso
customizar via CSS demais conteúdos e elementos. Veremos sobre customização de
elementos no próximo ebook como informado no final deste material.
20
O resultado do código acima será este:
<ionitem
class
=
"
itemdivider
">
Cidades do Brasil
</ionitem>
<ionitem>
Rio de Janeiro
</ionitem>
<ionitem>
Florianópolis
</ionitem>
Dentro de cada item pode ser adicionado os principais componentes do Ionic, mas para
eles serem exibidos da melhor forma precisamos adicionar as classes que irão tratar sua
exibição. Vamos começar pelos ícones, adicionando o elemento <i>dentro de um dos
itens:
<ionitem>
<i
class
=
"icon ionlocation"
></i>
<h2>
Tampa, FL
</h2>
<p>
Tampa é uma cidade localizada na costa ...
</p>
</ionitem>
21
O resultado desta alteração ficou assim:
Podemos observar que o ícone ficou pequeno, e não ficou ao lado direito, como é
comum ser utilizado. Agora vamos adicionar a classe , que altera o
itemiconleft
estilo do ícone dentro do item ficando assim:
<ionitem
class
=
"
itemiconleft
">
<i
class
=
"icon ionlocation"
></i>
<h2>
Tampa, FL
</h2>
<p>
Tampa é uma cidade localizada na costa ...
</p>
</ionitem>
Você irá perceber, com o tempo, que a maioria dos elementos do Ionic são customizados
desta forma, ou seja, adicionando classes para compor com outros elementos.
<ionitem
class
=
"
itemiconright
">
Destacar uma determinada área é comum de ver em listas, em Ionic chamamos esse
atributo de Badge. Altere outro item adicionando um com as classes abaixo:
<span>
<ionitem>
<h2>
Denver, CO
</h2>
<p>
Omaha é uma cidade localizada no estado ...
</p>
<span
class
=
"badge badgeassertive"
>
3
</span>
</ionitem>
22
<ionitem>
Rio
de
Janeiro
<span
class
=
"itemnote">
Popular
</span>
</ionitem>
<
a
class
=
"
item
">
<h2>
Colorado Springs, CO
</h2>
<p>
Colorado Springs é uma cidade norteamericana ...
</p>
</
a
>
Perceba que quado clicamos neste item um efeito de fundo cinza é exibido.
Vamos inserir um botão em um dos itens que tem apenas um texto, adicionando a classe
itembuttonleft ou
itembuttonright :
<ionitem
class
=
"itembuttonright">
Florian
ó
polis
<button
class
=
"button buttonpositive">
<i
class
=
"icon ioniostelephone"
></i>
</button>
</ionitem>
23
As listagem que aprendemos acima é bem utiliza para telas de parâmetros, formulários e
ações, vamos agora ver listagem com exibição de imagens. Para isso vamos criar um
novo projeto chamado appListImage:
ionic start appListImage blank
Na pasta img do seu projeto adicione três imagens diferentes para usarmos como
exemplo, você pode usar as imagens utilizada neste material que estão no
GitHub
. Salve
todas as imagens na pasta img.
Na área de conteúdo adicione a lista abaixo e três itens com a classe , para
itemavatar
que a exibição das imagens sejam aredondadas:
<ioncontent>
<ionlist>
<ionitem
class
=
"itemavatar">
<img
src
=
"img/city_1.jpg">
<h2>
San Francisco, CA
</h2>
<p>
São Francisco é a quarta cidade mais populosa do estado da Califórnia.
</p>
</ionitem>
<ionitem
class
=
"itemavatar">
<img
src
=
"img/city_2.jpg">
<h2>
Lexington, KY
</h2>
<p>
Lexington é a segunda cidade mais populosa do estado americano do
Kentucky.
</p>
</ionitem>
<ionitem
class
=
"itemavatar">
<img
src
=
"img/city_3.jpg">
<h2>
Washington, DC
</h2>
<p>
Washington, D.C. é a capital dos Estados Unidos.
</p>
</ionitem>
</ionlist>
</ioncontent>
24
Outra opção para lista com imagem é utilizar a classe , para
itemthumbnailleft
adicionar uma imagens maior e sem arredondamento ao lado esquerdo, ou o
itemthumbnailrightpara adicionar ao lado direito. Também podemos adicionar a
classe
itemtextwrappara o texto não ser limitado com reticencias:
<ionitem
class
=
"itemthumbnailleft">
<img
src
=
"img/city_4.jpg">
<h2>
Victoria, BC
</h2>
<p>
Victoria é a capital da província canadense de Colúmbia Britânica.
</p>
</ionitem>
<ionitem
class
=
"itemthumbnailright
itemtextwrap
">
<img
src
=
"img/city_5.jpg">
<h2>
Sacramento, CA
</h2>
<p>
Sacramento é a capital do estado norteamericano da Califórnia e sede do
condado de Sacramento.
</p>
</ionitem>
O resultado esperado:
Cards
É 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 pode ser adicionado qualquer estrutura de elementos, é indicado utilizar itens
como utilizamos em listas.
ionic start appCard blank
25
<ioncontent>
<div
class
=
"card">
<ionitem
class
=
"itemtextwrap">
Este é um simples Card com um texto para visualizar o comportamento do
componente.
</ionitem>
</div>
</ioncontent>
O resultado:
<div
class
=
"list card">
<div
class
=
"item itemdivider">
Opções do usuário
</div>
<div
class
=
"item itemtextwrap">
Escolha uma das opções abaixo
</div>
<a
href
=
"#"
class
=
"item itemiconleft">
<i
class
=
"icon ionhome"
></i>
Definir endereço
</a>
<a
href
=
"#"
class
=
"item itemiconleft">
<i
class
=
"icon ioniostelephone"
></i>
Editar número de telefone
</a>
<a
href
=
"#"
class
=
"item itemiconleft">
<i
class
=
"icon ionwifi"
></i>
Escolher uma rede preferencial
</a>
<a
href
=
"#"
class
=
"item itemiconleft">
<i
class
=
"icon ioncard"
></i>
Alterar dados de pagamento
</a>
</div>
26
O resultado:
<div
class
=
"list card">
<div
class
=
"item itemavatar">
<img
src
=
"img/user1.png">
<h2>
Fábio Rogério SJ
</h2>
<p><b>
32min
</b>
Compartilhou uma foto
</p>
</div>
<div
class
=
"item itembody">
<img
class
=
"fullimage"
src
=
"img/maringa.jpg">
<p>
Pensa em um lugar show! Recomendo todos irem visitar a grande Maringá no
Paraná :)
</p>
<p>
<a
href
=
"#"
class
=
"subdued"
>
1 Curtida
</a>
<a
href
=
"#"
class
=
"subdued"
>
5 Comentários
</a>
</p>
</div>
</div>
O resultado:
27
Forms
Ionic fornece uma estrutura de formulários que são utilizados com as listas e itens,
sendo assim cada campo é um item de uma lista composto por um label . Como os
outros componentes estes também podem ser combinados com os demais
componentes do framework.
É importante definir correto o tipo do campo, para que o teclado virtual seja
customizado, dependendo do tipo. Para saber quais tipos são suportados veja na
documentação oficial do Ionic Framework
ou outros documentos sobre tipos em HTML5.
ionic start appForms blank
Na área de conteúdo vamos criar três campos e um botão. Cada campos deve estar
dentro de um
labelque recebe a classe iteme iteminputpara que os campos ocupe
100% do espaço do item da lista e definimos um valor para a propriedade ,
placeholder
do HTML5, para quando um valor for digitado no campo o rótulo oculte. O botão está
em uma outra
divcom a classe p
adding para não ficar colado nas laterias.
<ionlist>
<label
class
=
"item iteminput">
<input
type
=
"text"
placeholder
=
"Nome completo">
</label>
<label
class
=
"item iteminput">
<input
type
=
"email"
placeholder
=
"Email">
</label>
<label
class
=
"item iteminput">
<textarea
placeholder
=
"Comentário"
></textarea>
</label>
</ionlist>
<div
class
=
"padding">
<button
class
=
"button buttonblock buttonpositive">
Enviar comentário
</button>
</div>
28
O resultado esperado é:
<label
class
=
"item iteminput">
<span
class
=
"inputlabel"
>
Username
</span>
<input
type
=
"text">
</label>
<label
class
=
"item iteminput itemstackedlabel">
<span
class
=
"inputlabel"
>
Primeiro nome
</span>
<input
type
=
"text"
placeholder
=
"Fábio">
</label>
<label
class
=
"item iteminput itemfloatinglabel">
<span
class
=
"inputlabel"
>
Sobrenome
</span>
<input
type
=
"text"
placeholder
=
"Digite seu sobrenome">
</label>
<div
class
=
"item iteminputinset">
<label
class
=
"iteminputwrapper">
<input
type
=
"email"
placeholder
=
"Email">
</label>
<button
class
=
"button buttonsmall buttonbalanced">
Enviar
</button>
</div>
29
<label
class
=
"item iteminput">
<i
class
=
"icon ionsearch placeholdericon"
></i>
<input
type
=
"text"
placeholder
=
"Procurar...">
</label>
Toggle
ionic start appToggle blank
Vamos criar uma lista de opções sendo cada item um toggle marcado com a classe
itemtoggle , sendo assim o texto fica ao lado esquerdo e o botão toggle ao lado
direito. As cores de cada toggle pode ser customizado conforme os temas do Ionic.
<ioncontent
class
=
"padding">
<div
class
=
"card padding">
Quais tecnologias você esta aprendendo?
</div>
<ionlist>
30
<ionitem
class
=
"itemtoggle">
HTML5
<label
class
=
"toggle togglebalanced">
<input
type
=
"checkbox">
<div
class
=
"track">
<div
class
=
"handle"
></div>
</div>
</label>
</ionitem>
<ionitem
class
=
"itemtoggle">
CSS
<label
class
=
"toggle togglebalanced">
<input
type
=
"checkbox">
<div
class
=
"track">
<div
class
=
"handle"
></div>
</div>
</label>
</ionitem>
<ionitem
class
=
"itemtoggle">
JavaScript
<label
class
=
"toggle togglebalanced">
<input
type
=
"checkbox">
<div
class
=
"track">
<div
class
=
"handle"
></div>
</div>
</label>
</ionitem>
</ionlist>
</ioncontent>
O resultado:
Checkbox
31
ionic start appCheckbox blank
Este componente também usa como base o componente lista onde cada item recebe um
checkbox. Você pode customizar as cores utilizando os temas, para exemplo vamos
deixar o último item com uma cor diferente:
<ionlist>
<ionitem
class
=
"itemcheckbox">
<label
class
=
"checkbox">
<input
type
=
"checkbox">
</label>
HTML5
</ionitem>
<ionitem
class
=
"itemcheckbox">
<label
class
=
"checkbox">
<input
type
=
"checkbox">
</label>
CSS
</ionitem>
<ionitem
class
=
"itemcheckbox">
<label
class
=
"checkbox checkboxassertive">
<input
type
=
"checkbox">
</label>
JavaScript
</ionitem>
</ionlist>
O resultado:
Radio Buttons
Radio Buttons, ao contrario 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:
ionic start appRadioButtons blank
32
Vamos criar um subHeader e uma lista, na lista vamos adicionar alguns radio buttons. o
da página deverá estar assim:
body
<body
ngapp
=
"starter">
<ionpane>
<ionheaderbar
class
=
"barpositive"
aligntitle
=
"center">
<h1
class
=
"title"
>
Exemplo Radio Buttons
</h1>
</ionheaderbar>
<ionheaderbar
class
=
"barsubheader barcalm"
aligntitle
=
"center">
<h1
class
=
"title"
>
Qual tecnologia você mais domina?
</h1>
</ionheaderbar>
<ioncontent>
<ionlist>
<ionradio>
PHP
</ionradio>
<ionradio>
Java
</ionradio>
<ionradio>
JavaScript
</ionradio>
<ionradio>
.NET
</ionradio>
<ionradio>
Ruby
</ionradio>
<ionradio>
Python
</ionradio>
<ionradio>
Go
</ionradio>
</ionlist>
</ioncontent>
</ionpane>
</body>
O resultado:
Range
ionic start appRange blank
33
Adicione na área de conteúdo algumas opção com cores diferente para exemplificar o
componente:
<ionlist>
<ionitem
class
=
"range rangepositive">
<i
class
=
"icon ioniossunnyoutline"
></i>
<input
type
=
"range"
min
=
"0"
max
=
"100"
value
=
"12">
<i
class
=
"icon ioniossunny"
></i>
</ionitem>
<ionitem
class
=
"range rangecalm">
<i
class
=
"icon ionioslightbulboutline"
></i>
<input
type
=
"range"
min
=
"0"
max
=
"100"
value
=
"25">
<i
class
=
"icon ionioslightbulb"
></i>
</ionitem>
<ionitem
class
=
"range rangebalanced">
<i
class
=
"icon ioniosboltoutline assertive"
></i>
<input
type
=
"range"
min
=
"0"
max
=
"100"
value
=
"38">
<i
class
=
"icon ioniosbolt assertive"
></i>
</ionitem>
</ionlist>
O resultado:
Select
ionic start appSelect blank
34
<ioncontent>
<ionlist>
<ionitem
class
=
"iteminput itemselect">
<div
class
=
"inputlabel">
Qual fluta você mais gosta?
</div>
<select>
<option>
Laranja
</option>
<option
selected
>
Maça
</option>
<option>
Banana
</option>
<option>
Caqui
</option>
<option>
Goiaba
</option>
</select>
</ionitem>
</ionlist>
</ioncontent>
No
browser
desktop: No Android: No iOS:
35
Tabs
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:
ionic start appTabs blank
Este componente é melhor utilizado com as rotas em AngularJS, mas como neste
material veremos apenas o essencial dos componentes então vamos criar algo mais
simples apenas para conhecer o componente.
As tabs podem ser apenas texto, apenas í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
ngapp
=
"starter">
<ionpane>
<ionheaderbar
class
=
"barassertive">
<h1
class
=
"title"
>
Exemplo tabs
</h1>
</ionheaderbar>
<iontabs
class
=
"tabsassertive tabsicontop">
<iontab
title
=
"Home"
iconon
=
"ioniosfiling"
iconoff
=
"ioniosfilingoutline">
<ionview>
<ioncontent
class
=
"padding">
Conteúdo do tab Home
</ioncontent>
</ionview>
</iontab>
<iontab
title
=
"Sobre"
iconon
=
"ioniosclock"
iconoff
=
"ioniosclockoutline">
<ionview>
<ioncontent
class
=
"padding">
Conteúdo do tab Sobre
</ioncontent>
</ionview>
</iontab>
<iontab
title
=
"Configurações"
iconon
=
"ioniosgear"
iconoff
=
"ioniosgearoutline">
<ionview>
<ioncontent
class
=
"padding">
Conteúdo do tab Configurações
</ioncontent>
</ionview>
36
</iontab>
</iontabs>
</ionpane>
</body>
Por ser um componente muito utilizada para navegação, o Android e iOS exibem
diferente, podemos testar utilizando o Ionic lab, que tem por objetivo mostrar nos dois
sistemas a aplicação. Para utilizar o Ionic lab digite
labno final do comando para
testar o aplicativo no
browser
:
ionic serve
lab
37
Grid
As grids em Ionic são simples e fáceis de implementar, pois o componente utiliza o
recurso
FlexBox do CSS3 para desenhar os elementos. Crie um novo projeto chamado
appGrid:
ionic start appGrid blank
Vamos criar uma grid simples com duas linhas e duas colunas, adicione na área de
conteúdo o componente:
<ioncontent>
<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>
</ioncontent>
Para ser possível verificar com mais clareza nossos exemplos vamos alterar a cor de
fundo de cada coluna e adicionar uma borda, editando o s da pasta css:
tyle.css
/* Empty. Add your own CSS if you like */
.
col {
background
color
:
#CCC;
border
:
2px
solid
#fff;
}
É possível definir um tamanho fixo para uma determinada coluna. Adicione uma nova
linha:
<div
class
=
"row">
<div
class
=
"col col50"
>
5
</div>
<div
class
=
"col"
>
6
</div>
<div
class
=
"col"
>
7
</div>
38
</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:
.col10 10%
.col20 20%
.col25 25%
.col33 33.3333%
.col50 50%
.col67 66.6666%
.col75 75%
.col80 80%
.col90 90%
Outro recurso é deixar uma coluna em branco, ou seja, reservar o espaço porem não
exibir nenhum elemento, adicione uma nova linha:
<div
class
=
"row">
<div
class
=
"col col33 coloffset33"
>
8
</div>
<div
class
=
"col"
>
9
</div>
</div>
Resultado:
39
Os tamanhos para os espaços em branco são os mesmos da tabela acima, porem o nome
deve ser
coloffsetTAMANHO.
Quando temos uma coluna com altura variável, podemos definir como será o
alinhamento vertical sendo no topo, centro ou no rodapé. Adicione uma nova linha:
<div
class
=
"row">
<div
class
=
"col coltop"
>
10
</div>
<div
class
=
"col colcenter"
>
11
</div>
<div
class
=
"col colbottom"
>
12
</div>
<div
class
=
"col"
>
13
<br>
14
<br>
15
<br>
16
</div>
</div>
Veja os alinhamentos:
<div
class
=
"row
rowtop
">
<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
=
"row responsivesm">
<div
class
=
"col"
>
17
</div>
<div
class
=
"col"
>
18
</div>
<div
class
=
"col"
>
19
</div>
<div
class
=
"col"
>
20
</div>
</div>
Vejam no resultado que o tamanho da tela é validado e conforme existe mais espaço as
colunas são exibidas lado a lado, caso seja menor elas são exibidas uma em baixo da
outra.
40
Tela menor: Tela maior:
Os tamanhos validados podem ser visto na tabela a baixo juntamente com suas
respectivas classes de utilização:
41
Empacotando o aplicativo
O processo de build
, também conhecido como empacotamento, é utilizado para testar e
publicar o aplicativo final.
Neste material vamos abordar apenas os comandos para gerar o aplicativo para testar
nos diferentes
devices
. Para publicar nas
Stores
iremos ver em outro ebook.
Android
Para criar o aplicativo final na plataforma Android precisamos do Android SDK, que é
todas as ferramentas para criar o aplicativo final (.apk) e poder ser testado em
emuladores e devices.
Para usuários Linux o processo é bem parecido com algumas diferenças nas definições
de variáveis de ambiente. Neste material vamos abordar a instalação do Android SDK em
ambiente Windows.
42
Para usuários do Windows podemos usar o instalador, onde já é verificado se existe o
Java JDK instalado, e instalar o SDK em uma determinada pasta.
Execute o instalador e siga os passos abaixo:
Se você tiver o Java JDK instalado o instalador irá seguir para a instalação do Android
SDK, caso contrario será exibido esta tela solicitando a instalação do Java JDK:
43
Após o download concluído siga os passos abaixo para instalar o Java JDK e suas
dependências:
Ao concluir a instalação do Java JDK, execute novamente o instalador do Android, ou se
ainda estiver aberto clique no botão Back e depois Next, você verá que agora ele irá
encontrar a instalação do Java e assim podemos prosseguir com a instalação do Android
SDK clicando em Next:
44
Escolha um caminho de fácil acesso para a instalação, pois em alguns momentos você
terá que entrar nesta pasta para executar o
Update
do Android:
O Ionic precisa de algumas dependências do Android para fazer build
, ou seja, gerar o
aplicativo final, para isso vamos fazer alguns Update no Manager Android SDK. No
Manager desmarque tudo que já vem marcado e marque apenas as opções listadas
abaixo. Em seguida clique em Install 9 packages:
45
Em seguida clique em
Accept License e
Install
para o download começar. Este processo
pode demorar alguns minutos.
Vamos agora adicionar algumas variáveis de ambiente para que o Ionic encontre o local
onde está instalado o Android SDK. Entre nas
propriedades
do seu computador e vai em
Configurações avançadas do sistema eVariáveis de Ambiente:
46
Em variáveis do usuário adicione uma nova chamada
ANDROID_HOMEe em valor preencha
com o caminho onde foi feito a instalação do SDK:
Agora vamos adicionar a plataforma android em nosso projeto e fazer o build
. Se seu
terminal estiver aberto feche ele e abra novamente para que as variáveis de ambiente
sejam carregas. Em seguida digite os comandos dentro da pasta de algum projeto criado
nos exemplos acima:
ionic platform add android
ionic build android
Se o build ocorrer correto uma mensagem será exibida em seu terminal parecida com
essa:
BUILD SUCCESSFUL
Total time: 2 mins 57.657 secs
Built the following apk(s):
C:/workspace/app1/platforms/android/build/outputs/apk/androiddebug.apk
Na ultima linha é apresentado o caminho onde foi gerado o aplicativo final, no caso o
androiddebug.apk . Para testar em seu d
evice
basta instalar este arquivo nele.
Para testar em emuladores ou até mesmo fazer a instalação direto em seu d evice
, sem
precisar copiar o arquivo apk,
leia este post
em meu site com várias opções e formas.
47
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 maquina com o sistema
operacional iOS.
npm install g iossim
ionic build ios
Este processo ira compilar nosso aplicativo e agora podemos abri-lo via Xcode para
emular ou rodar em um
device
com iOS.
48
Ao abrir basta escolher um emulador, ou um
device conectado via USB, onde está
"iPhone 6s Plus" e clicar no ícone play.
Este processo irá executar o emulador, caso você escolha um dos emuladores, e em
seguida irá instalar e rodar o aplicativo:
49
Próximo passo
Este ebook abordou os recursos introdutórios e essenciais para se iniciar no Ionic
Framework, agora vamos aprender como customizar os componentes para criar um
design mais proprietário e melhorar a experiência do usuário.
Veja o
#2 Ionic Framework - Customizando e criando componentes
:
50