Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Teste Giovani

Teste Giovani

Giovani Felipe

May 14, 2016
Tweet

Other Decks in Education

Transcript

  1. Sobre este Ebook O desenvolvimento de aplicativos móveis já não

    é novidade e está bem consolidado em suas plataformas. Mas algumas discussões sempre ocorrem na hora de definir qual plataforma desenvolver, se você procura está reposta neste ebook não irá encontrar, pois são vários os fatores, e pontos de analise, que definem se você deve desenvolver nativo ou híbrido e vamos deixar essa discussão para um outro momento. 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. Atualmente Fábio Rogério trabalha com consultoria e treinamento em desenvolvimento de aplicações web e mobile utilizando tecnologias híbridas. E também é professor, de curso superior, onde ministra as disciplinas de desenvolvimento ​ frontend​ , desenvolvimento de aplicativos móveis, web design, design de interação e lógica de programação. 1
  2. 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 Cordova e Ionic CLI 7 ​ Criando o primeiro app 8 ​ Estrutura dos projetos Ionic 10 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
  3. Forms 28 Toggle 30 Checkbox 31 Radio Buttons 32 Range

    33 Select 34 Tabs 36 Grid 38 Conclusão sobre componentes 41 ​ Empacotando o aplicativo 42 Android 42 iOS 48 Próximo passo 50 3
  4. 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 diferencial do Ionic Framework é sua preocupação com a performance e ganho de produtividade no desenvolvimento. Você vai comprovar isto no decorrer desde material enquanto for criando os projetos exemplos. 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 Em um evento chamado iPhoneDevCamp, ocorrido em São Francisco em 2006, três jovens criaram uma plataforma para criar aplicativos com HTML5/CSS/JS denominado PhoneGap. Em 2010 a Apple confirmou que a plataforma estava de acordo com os parâmetros da licença para desenvolvedores iOS. Em 2011 a Adobe comprou o PhoneGap e doou o código fonte do projeto para a fundação Apache, porem o nome “PhoneGap” ficou exclusivo para a Adobe e o projeto foi renomeado para 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
  5. 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 AngularJS é um ​ framework escrito em JavaScript ​ open source​ , mantido pela Google, e tem por objetivo facilitar o desenvolvimento de aplicações web estendendo o HTML tradicional para trabalhar com conteúdo dinâmico, com a ligação direta e bidirecional dos dados (​ two­way data­binding​ ) que permite sincronização automática entre o HTML e o objeto em JavaScript. Não faz parte do escopo deste material explicar, de forma ampla, o funcionamento do AngularJS, porem você irá aprender com a evolução dos exercícios aplicados. Atualmente o AngularJS lançou a versão 2.0, que mudou totalmente a forma de implementar aplicações SPA (​ single page application​ ), também não iremos abordar este tema neste material. 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. O ngCordova é apenas um atalho para chamar os ​ plugins ​ nativos do Apache Cordova, de forma que seja escutado pelo AngularJS. 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
  6. 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 NodeJS, ou Node.js, é uma plataforma construída sobre o motor JavaScript do Google Chrome para facilmente construir aplicações rápidas e escaláveis. Para instalar o NodeJS baixe a última versão, no site oficial, escolhendo seu sistema operacional: https://nodejs.org​ . 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 Git é um sistema de controle de versão distribuído e um sistema de gerenciamento de código fonte, com ênfase em velocidade. O Git foi inicialmente projetado e desenvolvido por ​ Linus Torvalds para o desenvolvimento do kernel Linux, mas foi adotado por muitos outros projetos. Como outros projetos ​ open source o Ionic esta hospedado no ​ GitHub​ , que é um servidor de Git gratuito para projetos abertos, sendo assim precisamos do Git instalado na maquina. Para instalar entre no link: ​ https://git-scm.com/downloads e baixe a versão para seu sistema operacional. 6
  7. 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​ . Cordova e Ionic CLI 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. Abra um terminal, certifique-se que você tenha permissão de administrador, e digite o comando abaixo. Os exemplos deste material são apresentados em ambiente Windows, sendo assim para acessar o terminal abra o programa CMD. n p m i n s t a l l ­ g c o r d o v a i o n i c 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: i o n i c ­ ­ v e r s i o n Se estiver instalado corretamente a versão do Ionic Framework deverá ser apresentada no terminal. Se você teve algum problema desconhecido na instalação acesse a lista de discussão sobre o ambiente de instalação no link abaixo e deixe sua dúvida: http://fabiorogeriosj.com.br/desenvolvendo-aplicativos-mobile-ionic-post-1.html 7
  8. 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: blank Cria um projeto em branco apenas com uma tela inicial sidemenu Cria um projeto com algumas telas e um menu lateral tabs Cria um projeto com algumas abas maps Cria um projeto com um mapa exemplo salesforce Cria um projeto com Ionic e Salesforce complex-list Cria um projeto com uma lista de exemplo Vamos começar com um projeto em branco, para isso digite o comando ​ start​ , e seus parâmetros, no terminal: i o n i c s t a r t P r i m e i r o A p p b l a n k Neste momento o Ionic começa a fazer download do arquivo de ​ template ​ e executar algumas tarefas, dentre elas, se for a primeira vez que você executa este comando, ele pergunta se você deseja criar uma conta na plataforma ionic.io, iremos discutir sobre ionic.io em outro material, e você deve responder sim (Y) ou não (n). Se responder sim ele ira abrir o site do ionic.io e se responder não ele ira apenas continuar com a criação do projeto. Para este momento responda ​ n​ : C r e a t e a n i o n i c . i o a c c o u n t t o s e n dP u s hN o t i f i c a t i o n sa n du s et h eI o n i c V i e w a p p ? ( Y / n ) : ​ n Vamos entender o que cada comando faz: • s t a r t ​ : Cria um novo aplicativo • P r i m e i r o A p p ​ : Define o nome do aplicativo, uma pasta com este nome será criada no diretório que você está. O nome do aplicativo poderá ser alterado posteriormente caso seja necessário. • b l a n k ​ : Este é o ​ template ​ utilizado para criar o app. 8
  9. Para testar nosso primeiro aplicativo entre na pasta que foi

    criada com o nome do seu aplicativo, via linha de comando: c d P r i m e i r o A p p Em seguida digite o comando para rodar o aplicativo no ​ browser​ : i o n i c s e r v e 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 ​ l o c a l h o s t ​ . Você verá seu aplicativo executando no navegador. 9
  10. 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. Abra a pasta PrimeiroApp e veja os seguintes arquivos: Vamos discutir cada arquivo no seu devido momento, por enquanto precisamos apenas conhecer o config.xml e a pasta www. config.xml Neste arquivo é definido os principais parâmetros de inicialização e permissões que o Cordova precisa para startar e compilar, para diferentes plataformas, seu aplicativo. Se você estiver utilizando o Sublime Text abra seu projeto e verifique o arquivo config.xml: 10
  11. 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. < w i d g e t i d = " c o m . i o n i c f r a m e w o r k . p r i m e i r o a p p 1 1 7 3 9 5 " v e r s i o n = " 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. As demais linhas são configurações de inicialização, habilitação de ​ plugins e permissões, iremos discutir sobre elas quando chegar o momento. www Nesta pasta ​ w w wvocê 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: w w w ├── c s s │ └── s t y l e . c s s ├── i m g │ └── i o n i c . p n g ├── j s │ └── a p p . j s └── l i b │ └── i o n i c └── i n d e x . h t m l No arquivo ​ s t y l e . c s s iremos codificar os estilos personalizados dos elementos quando necessário. Na pasta ​ i m g ​ iremos colocar todas nossas imagens. O arquivo ​ a p p . j s é o principal arquivo JavasScript do aplicativo, nele iremos configurar as rotas (telas) e criar os controles. O arquivo ​ i n d e x . h t m l ​ é nossa primeira tela do aplicativo (​ view​ ). 11
  12. 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. Existem duas formas de utilizar alguns dos componentes do Ionic: • Utilizar elementos nativos do HTML e adicionar as classes CSS < u l ​ ​ c l a s s ​ = ​ " l i s t " ​ > ​ < l i ​ ​ c l a s s ​ = ​ " i t e m " ​ > . . . ​ < / l i > < / u l > • Ou utilizar as nomenclaturas dos elementos já customizados do Ionic: < i o n ­ l i s t > ​ < i o n ­ i t e m > . . . ​ < / i o n ­ i t e m > < / i o n ­ l i s t > 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. Para voltar uma pasta anterior por linha de comando, digite: c d . . 12
  13. Para criar, entrar na pasta e rodar um novo app

    digite: i o n i c s t a r t a p p H e a d e r b l a n k c d a p p H e a d e r i o n i c s e r v e Quando criamos um novo app com o ​ template blank o ​ i n d e x . h t m ljá contem um Header, Vamos editá-lo alterando o arquivo ​ w w w / i n d e x . h t m l ​ . < i o n ­ h e a d e r ­ b a r ​ ​ c l a s s ​ = ​ " b a r ­ p o s i t i v e " > ​ < h 1 ​ ​ c l a s s ​ = ​ " t i t l e " ​ > ​ A p p E x e m p l o 1 ​ < / h 1 > < / i o n ­ h e a d e r ­ b a r > Alteramos o estilo do Header e alteramos o seu título. Veremos como adicionar botões na sessão Buttons. Quando você faz alguma alteração no seu projeto e salva, o aplicativo no ​ browser é automaticamente recarregado. Você verá um resultado igual a este: 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. Em seguida, ao lado esquerdo do terminal, habilite a visualização para ​ device​ , com isso seu aplicativo será apresentado e configurado nos padrões de um ​ smartphone​ : 13
  14. 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 a l i g n ­ t i t l e = " c e n t e r " ​ no componente header: < i o n ­ h e a d e r ­ b a r ​ ​ c l a s s ​ = ​ " b a r ­ p o s i t i v e " ​ ​ a l i g n ­ t i t l e ​ = ​ " c e n t e r " ​ > ​ < h 1 ​ ​ c l a s s ​ = ​ " t i t l e " ​ > ​ A p p E x e m p l o 1 ​ < / h 1 > < / i o n ­ h e a d e r ­ b a r > 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. Ainda no aplicativo AppHeader adicione a classe ​ p a d d i n gno elemento ​ i o n ­ c o n t e n t ​ , para adicionar um espaço interno, e adicione os elementos dentro de ​ i o n ­ c o n t e n t como mostra o exemplo abaixo: < b o d y ​ ​ n g ­ a p p ​ = ​ " s t a r t e r " > ​ < i o n ­ p a n e > ​ < i o n ­ h e a d e r ­ b a r ​ ​ c l a s s ​ = ​ " b a r ­ p o s i t i v e " > ​ < h 1 ​ ​ c l a s s ​ = ​ " t i t l e " ​ > ​ A p p E x e m p l o 1 ​ < / h 1 > ​ < / i o n ­ h e a d e r ­ b a r > ​ < i o n ­ c o n t e n t ​ ​ c l a s s ​ = ​ " p a d d i n g " ​ > ​ < h 1 > ​ E x e m p l o d e c o n t e ú d o I o n i c ​ < / h 1 > ​ < h 2 > ​ A p e n a s u m a d e m o n s t r a ç ã o d a r o l a g e m ​ < / h 2 > ​ < h 3 > ​ A s l i n h a s a b a i x o s ã o e x e m p l o s ​ < / h 3 > ​ < i m g ​ ​ s r c ​ = ​ " i m g / i o n i c . p n g " > ​ < p > ​ p a r á g r a f o 1 ​ < / p > ​ < i m g ​ ​ s r c ​ = ​ " i m g / i o n i c . p n g " > ​ < p > ​ p a r á g r a f o 2 ​ < / p > ​ < i m g ​ ​ s r c ​ = ​ " i m g / i o n i c . p n g " > ​ < p > ​ p a r á g r a f o 3 ​ < / p > ​ < i m g ​ ​ s r c ​ = ​ " i m g / i o n i c . p n g " > 14
  15. ​ < p > ​ p a r á g

    r a f o 4 ​ < / p > ​ < i m g ​ ​ s r c ​ = ​ " i m g / i o n i c . p n g " > ​ < p > ​ p a r á g r a f o 5 ​ < / p > ​ < i m g ​ ​ s r c ​ = ​ " i m g / i o n i c . p n g " > ​ < p > ​ p a r á g r a f o 6 ​ < / p > ​ < / i o n ­ c o n t e n t > ​ < / i o n ­ p a n e > < / b o d y > Salve seu código e veja no ​ browser​ o resultado com a rolagem. Footer Footer também é um componente fixo porem fica sempre posicionado no rodapé da página. Adicione o código abaixo após o componente ​ < / i o n ­ c o n t e n t > ​ : < i o n ­ f o o t e r ­ b a r ​ ​ c l a s s ​ = ​ " b a r ­ b a l a n c e d " > ​ < d i v ​ ​ c l a s s ​ = ​ " t i t l e " ​ > ​ R o d a p é d o a p p ​ < / d i v > < / i o n ­ f o o t e r ­ b a r > O resultado será algo parecido com isso: 15
  16. 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: . . . < i o n ­ p a n e > ​ < i o n ­ h e a d e r ­ b a r ​ ​ c l a s s ​ = ​ " b a r ­ p o s i t i v e " > ​ < h 1 ​ ​ c l a s s ​ = ​ " t i t l e " ​ > ​ A p p E x e m p l o 1 ​ < / h 1 > ​ < / i o n ­ h e a d e r ­ b a r > ​ < i o n ­ h e a d e r ­ b a r ​ ​ c l a s s ​ = ​ " b a r ­ s u b h e a d e r b a r ­ d a r k " > ​ < h 1 ​ ​ c l a s s ​ = ​ " t i t l e " ​ > ​ S u b H e a d e r ​ < / h 1 > ​ < / i o n ­ h e a d e r ­ b a r > ​ < i o n ­ c o n t e n t ​ ​ c l a s s ​ = ​ " p a d d i n g " > . . . ​ < / i o n ­ c o n t e n t > ​ < i o n ­ f o o t e r ­ b a r ​ ​ c l a s s ​ = ​ " b a r b a r ­ b a l a n c e d " > ​ < d i v ​ ​ c l a s s ​ = ​ " t i t l e " ​ > ​ R o d a p é d o a p p ​ < / d i v > ​ < / i o n ­ f o o t e r ­ b a r > ​ < i o n ­ f o o t e r ­ b a r ​ ​ c l a s s ​ = ​ " b a r ­ s u b f o o t e r b a r ­ a s s e r t i v e " > ​ < d i v ​ ​ c l a s s ​ = ​ " t i t l e " ​ > ​ R o d a p é s e c u n d á r i o ​ < / d i v > ​ < / i o n ­ f o o t e r ­ b a r > ​ < / i o n ­ p a n e > . . . Foi adicionado as classes ​ b a r ­ s u b h e a d e re ​ b a r ­ s u b f o o t e rpara que o ​ layout fosse posicionado da forma correta. Cores O Ionic vem com um conjunto de cores e uma nomenclatura onde podemos ver abaixo: 16
  17. 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 ​ b a r ­ N O M E T E M A ​ . Para um elemento título, como H1, H2, etc, podemos adicionar apenas o nome da classe. Vamos conhecendo as diferentes aplicabilidades dos temas no decorrer deste material. 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 ​ ​ c l a s s ​ = ​ " i c o n i o n ­ s t a r " ​ > < / i > No site ​ ionicons ao clicar sobre um determinado ícone você verá a classe que deve ser adicionado no elemento. Buttons Os botões são elementos essenciais de um aplicativo, no Ionic é possível escolher o tema, estilo e adicionar ícone. Crie um novo projeto chamado appButtons: i o n i c s t a r t a p p B u t t o n s b l a n k Adicione o componente botão utilizando o tema ​ a s s e r t i v e ​ : < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n b u t t o n ­ a s s e r t i v e " ​ > ​ P r i m e i r o b o t ã o ​ < / b u t t o n > É possível determinar que o componente ocupe 100% da largura da tela adicionando a classe ​ b u t t o n ­ b l o c k ​ , ou se for utilizado em um formulário, por exemplo, e deseja que 17
  18. seja completo, ou seja, sem bordas arredondadas nas laterais pode

    utilizar a classe b u t t o n ­ f u l l ​ : < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n b u t t o n ­ a s s e r t i v e ​ b u t t o n ­ b l o c k ​ " > P r i m e i r o b o t ã o < / b u t t o n > Os Buttons ​ tem classes para tratar botões de diferentes tamanhos como pequenos, normais e grandes: < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n ​ b u t t o n ­ s m a l l ​ b u t t o n ­ b a l a n c e d " > B o t ã o p e q u e n o < / b u t t o n > < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n b u t t o n ­ d a r k " > B o t ã o n o r m a l < / b u t t o n > < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n ​ b u t t o n ­ l a r g e ​ b u t t o n ­ r o y a l " > B o t ã o g r a n d e < / b u t t o n > Outro estilo bem utilizado é botão com apenas bordas ou apenas textos: < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n b u t t o n ­ o u t l i n e b u t t o n ­ p o s i t i v e " > B o t ã o a p e n a s b o r d a < / b u t t o n > < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n b u t t o n ­ c l e a r b u t t o n ­ p o s i t i v e " > B o t ã o a p e n a s t e x t o < / b u t t o n > 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: < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n i c o n ­ l e f t i o n ­ h o m e " > H o m e < / b u t t o n > < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n i c o n ­ l e f t i o n ­ s t a r b u t t o n ­ p o s i t i v e " > F a v o r i t o s < / b u t t o n > < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n i c o n ­ r i g h t i o n ­ c h e v r o n ­ r i g h t b u t t o n ­ c a l m " > S a i b a m a i s < / b u t t o n > < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n i c o n ­ l e f t i o n ­ c h e v r o n ­ l e f t b u t t o n ­ c l e a r b u t t o n ­ d a r k " > V o l t a r < / b u t t o n > < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n i c o n i o n ­ g e a r ­ a " ​ > < / b u t t o n > < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n b u t t o n ­ i c o n i c o n i o n ­ s e t t i n g s " ​ > < / b u t t o n > < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n b u t t o n ­ o u t l i n e i c o n ­ r i g h t i o n ­ n a v i c o n b u t t o n ­ b a l a n c e d " > A ç õ e s 18
  19. < / b u t t o n > O

    Header e Footer também aceitam botões e você apenas precisa adicionar antes, ou depois, do elemento ​ t i t l e ​ para deixar a esquerda ou à direita: < i o n ­ h e a d e r ­ b a r ​ ​ c l a s s ​ = ​ " b a r ­ b a l a n c e d " > ​ < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n i c o n i o n ­ n a v i c o n " ​ > < / b u t t o n > ​ < h 1 ​ ​ c l a s s ​ = ​ " t i t l e " ​ > ​ A p p B u t t o n s e x e m p l o s ​ < / h 1 > ​ < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n " ​ > ​ E d i t a r ​ < / b u t t o n > < / i o n ­ h e a d e r ­ b a r > Ou se preferir sem as bordas: < i o n ­ h e a d e r ­ b a r ​ ​ c l a s s ​ = ​ " b a r ­ b a l a n c e d " > ​ < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n ​ b u t t o n ­ i c o n ​ i c o n i o n ­ n a v i c o n " ​ > < / b u t t o n > ​ < h 1 ​ ​ c l a s s ​ = ​ " t i t l e " ​ > ​ A p p B u t t o n s e x e m p l o s ​ < / h 1 > ​ < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n ​ b u t t o n ­ c l e a r ​ " ​ > ​ E d i t a r ​ < / b u t t o n > < / i o n ­ h e a d e r ­ b a r > 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: < d i v ​ ​ c l a s s ​ = ​ " b u t t o n ­ b a r " > ​ < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n b u t t o n ­ d a r k " ​ > ​ B o t ã o 1 ​ < / b u t t o n > ​ < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n b u t t o n ­ d a r k " ​ > ​ B o t ã o 2 ​ < / b u t t o n > ​ < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n b u t t o n ­ d a r k " ​ > ​ B o t ã o 3 ​ < / b u t t o n > < / d i v > Seu projeto deve está com essa aparência: 19
  20. 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: i o n i c s t a r t a p p L i s t b l a n k 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: < i o n ­ c o n t e n t ​ ​ c l a s s ​ = ​ " p a d d i n g " > ​ < h 1 > ​ A s c i n c o c i d a d e s m a i s t o p s p a r a s e v i v e r ! ​ < / h 1 > ​ < h 4 > ​ S e g u n d o s i t e W a l l e t H u b . c o m ​ < / h 4 > ​ < i o n ­ l i s t > ​ < i o n ­ i t e m > ​ < h 2 > ​ C o l o r a d o S p r i n g s , C O ​ < / h 2 > ​ < p > ​ C o l o r a d o S p r i n g s é u m a c i d a d e n o r t e ­ a m e r i c a n a , l o c a l i z a d a n o e s t a d o d o C o l o r a d o , n o C o n d a d o d e E l P a s o . ​ < / p > ​ < / i o n ­ i t e m > ​ < i o n ­ i t e m > ​ < h 2 > ​ D e n v e r , C O ​ < / h 2 > ​ < p > ​ D e n v e r é a c a p i t a l , a c i d a d e m a i s p o p u l o s a e u m d o s 6 4 c o n d a d o s d o e s t a d o n o r t e ­ a m e r i c a n o d o C o l o r a d o . ​ < / p > ​ < / i o n ­ i t e m > ​ < i o n ­ i t e m > ​ < h 2 > ​ D e n v e r , C O ​ < / h 2 > ​ < p > ​ O m a h a é u m a c i d a d e l o c a l i z a d a n o e s t a d o a m e r i c a n o d o N e b r a s k a , n o C o n d a d o d e D o u g l a s . ​ < / p > ​ < / i o n ­ i t e m > ​ < i o n ­ i t e m > ​ < h 2 > ​ T a m p a , F L ​ < / h 2 > ​ < p > ​ T a m p a é u m a c i d a d e l o c a l i z a d a n a c o s t a l e s t e d o e s t a d o n o r t e ­ a m e r i c a n o d a F l ó r i d a , n o c o n d a d o d e H i l l s b o r o u g h , d o q u a l é s e d e . ​ < / p > ​ < / i o n ­ i t e m > ​ < i o n ­ i t e m > ​ < h 2 > ​ S a n D i e g o , C A ​ < / h 2 > ​ < p > ​ S a n D i e g o é u m a c i d a d e d o s E s t a d o s U n i d o s l o c a l i z a d a n o s u l d o e s t a d o d a C a l i f ó r n i a . ​ < / p > ​ < / i o n ­ i t e m > ​ < / i o n ­ l i s t > < / i o n ­ c o n t e n t > 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
  21. O resultado do código acima será este: Podemos adicionar um

    separador entre os itens adicionando a classe ​ i t e m ­ d i v i d e rno item que será o separador: < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " ​ i t e m ­ d i v i d e r ​ " > C i d a d e s d o B r a s i l < / i o n ­ i t e m > < i o n ­ i t e m > R i o d e J a n e i r o < / i o n ­ i t e m > < i o n ­ i t e m > F l o r i a n ó p o l i s < / i o n ­ i t e m > 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: < i o n ­ i t e m > ​ < i ​ ​ c l a s s ​ = ​ " i c o n i o n ­ l o c a t i o n " ​ > < / i > ​ < h 2 > ​ T a m p a , F L ​ < / h 2 > ​ < p > ​ T a m p a é u m a c i d a d e l o c a l i z a d a n a c o s t a . . . ​ < / p > < / i o n ­ i t e m > 21
  22. 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 ​ i t e m ­ i c o n ­ l e f t ​ , que altera o estilo do ícone dentro do item ficando assim: < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " ​ i t e m ­ i c o n ­ l e f t ​ " > ​ < i ​ ​ c l a s s ​ = ​ " i c o n i o n ­ l o c a t i o n " ​ > < / i > ​ < h 2 > ​ T a m p a , F L ​ < / h 2 > ​ < p > ​ T a m p a é u m a c i d a d e l o c a l i z a d a n a c o s t a . . . ​ < / p > < / i o n ­ i t e m > Agora podemos visualizar a exibição correta: 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. Alterando a classe do item para ​ i t e m ­ i c o n ­ r i g h t ​ o ícone passa a ser exibido na direita: < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " ​ i t e m ­ i c o n ­ r i g h t ​ " > Destacar uma determinada área é comum de ver em listas, em Ionic chamamos esse atributo de Badge. Altere outro item adicionando um ​ < s p a n > ​ com as classes abaixo: < i o n ­ i t e m > ​ < h 2 > ​ D e n v e r , C O ​ < / h 2 > ​ < p > ​ O m a h a é u m a c i d a d e l o c a l i z a d a n o e s t a d o . . . ​ < / p > ​ < s p a n ​ ​ c l a s s ​ = ​ " b a d g e b a d g e ­ a s s e r t i v e " ​ > ​ 3 ​ < / s p a n > < / i o n ­ i t e m > Também é possível adicionar um texto informativo de um item, chamada de Note. Altere o item Rio de Janeiro que contem apenas um texto: 22
  23. < i o n ­ i t e m >

    ​ R i o ​ d e ​ J a n e i r o ​ < s p a n ​ ​ c l a s s ​ = ​ " i t e m ­ n o t e " > ​ P o p u l a r ​ < / s p a n > < / i o n ­ i t e m > 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 ​ ​ c l a s s ​ = ​ " ​ i t e m ​ " > ​ < h 2 > ​ C o l o r a d o S p r i n g s , C O ​ < / h 2 > ​ < p > ​ C o l o r a d o S p r i n g s é u m a c i d a d e n o r t e ­ a m e r i c a n a . . . ​ < / 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 i t e m ­ b u t t o n ­ l e f t ​ ou ​ i t e m ­ b u t t o n ­ r i g h t ​ : < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " i t e m ­ b u t t o n ­ r i g h t " > ​ F l o r i a n ​ ó ​ p o l i s ​ < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n b u t t o n ­ p o s i t i v e " > ​ < i ​ ​ c l a s s ​ = ​ " i c o n i o n ­ i o s ­ t e l e p h o n e " ​ > < / i > ​ < / b u t t o n > < / i o n ­ i t e m > Nossa lista deve apresentar algo como: 23
  24. 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: i o n i c s t a r t a p p L i s t I m a g e b l a n k 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 ​ i t e m ­ a v a t a r ​ , para que a exibição das imagens sejam aredondadas: < i o n ­ c o n t e n t > ​ < i o n ­ l i s t > ​ < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " i t e m ­ a v a t a r " > ​ < i m g ​ ​ s r c ​ = ​ " i m g / c i t y _ 1 . j p g " > ​ < h 2 > ​ S a n F r a n c i s c o , C A ​ < / h 2 > ​ < p > ​ S ã o F r a n c i s c o é a q u a r t a c i d a d e m a i s p o p u l o s a d o e s t a d o d a C a l i f ó r n i a . ​ < / p > ​ < / i o n ­ i t e m > ​ < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " i t e m ­ a v a t a r " > ​ < i m g ​ ​ s r c ​ = ​ " i m g / c i t y _ 2 . j p g " > ​ < h 2 > ​ L e x i n g t o n , K Y ​ < / h 2 > ​ < p > ​ L e x i n g t o n é a s e g u n d a c i d a d e m a i s p o p u l o s a d o e s t a d o a m e r i c a n o d o K e n t u c k y . ​ < / p > ​ < / i o n ­ i t e m > ​ < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " i t e m ­ a v a t a r " > ​ < i m g ​ ​ s r c ​ = ​ " i m g / c i t y _ 3 . j p g " > ​ < h 2 > ​ W a s h i n g t o n , D C ​ < / h 2 > ​ < p > ​ W a s h i n g t o n , D . C . é a c a p i t a l d o s E s t a d o s U n i d o s . ​ < / p > ​ < / i o n ­ i t e m > ​ < / i o n ­ l i s t > < / i o n ­ c o n t e n t > O resultado deste componente será este: 24
  25. Outra opção para lista com imagem é utilizar a classe

    ​ i t e m ­ t h u m b n a i l ­ l e f t ​ , para adicionar uma imagens maior e sem arredondamento ao lado esquerdo, ou o i t e m ­ t h u m b n a i l ­ r i g h tpara adicionar ao lado direito. Também podemos adicionar a classe ​ i t e m ­ t e x t ­ w r a p ​ para o texto não ser limitado com reticencias: Adicione dois item em nossa lista como thumbnail: < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " i t e m ­ t h u m b n a i l ­ l e f t " > ​ < i m g ​ ​ s r c ​ = ​ " i m g / c i t y _ 4 . j p g " > ​ < h 2 > ​ V i c t o r i a , B C ​ < / h 2 > ​ < p > ​ V i c t o r i a é a c a p i t a l d a p r o v í n c i a c a n a d e n s e d e C o l ú m b i a B r i t â n i c a . ​ < / p > ​ < / i o n ­ i t e m > ​ < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " i t e m ­ t h u m b n a i l ­ r i g h t ​ i t e m ­ t e x t ­ w r a p ​ " > ​ < i m g ​ ​ s r c ​ = ​ " i m g / c i t y _ 5 . j p g " > ​ < h 2 > ​ S a c r a m e n t o , C A ​ < / h 2 > ​ < p > ​ S a c r a m e n t o é a c a p i t a l d o e s t a d o n o r t e ­ a m e r i c a n o d a C a l i f ó r n i a e s e d e d o c o n d a d o d e S a c r a m e n t o . ​ < / p > ​ < / i o n ­ i t e m > 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. Crie um novo aplicativo com o nome appCard: i o n i c s t a r t a p p C a r d b l a n k Adicione o componente Card e um item de texto sem limitação: 25
  26. < i o n ­ c o n t e

    n t > ​ < d i v ​ ​ c l a s s ​ = ​ " c a r d " > ​ < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " i t e m ­ t e x t ­ w r a p " > E s t e é u m s i m p l e s C a r d c o m u m t e x t o p a r a v i s u a l i z a r o c o m p o r t a m e n t o d o c o m p o n e n t e . ​ < / i o n ­ i t e m > ​ < / d i v > < / i o n ­ c o n t e n t > O resultado: Você pode adicionar a classe ​ l i s tem 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 diferente classes de itens: < d i v ​ ​ c l a s s ​ = ​ " l i s t c a r d " > ​ < d i v ​ ​ c l a s s ​ = ​ " i t e m i t e m ­ d i v i d e r " > O p ç õ e s d o u s u á r i o ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " i t e m i t e m ­ t e x t ­ w r a p " > E s c o l h a u m a d a s o p ç õ e s a b a i x o ​ < / d i v > ​ < a ​ ​ h r e f ​ = ​ " # " ​ ​ c l a s s ​ = ​ " i t e m i t e m ­ i c o n ­ l e f t " > ​ < i ​ ​ c l a s s ​ = ​ " i c o n i o n ­ h o m e " ​ > < / i > D e f i n i r e n d e r e ç o ​ < / a > ​ < a ​ ​ h r e f ​ = ​ " # " ​ ​ c l a s s ​ = ​ " i t e m i t e m ­ i c o n ­ l e f t " > ​ < i ​ ​ c l a s s ​ = ​ " i c o n i o n ­ i o s ­ t e l e p h o n e " ​ > < / i > E d i t a r n ú m e r o d e t e l e f o n e ​ < / a > ​ < a ​ ​ h r e f ​ = ​ " # " ​ ​ c l a s s ​ = ​ " i t e m i t e m ­ i c o n ­ l e f t " > ​ < i ​ ​ c l a s s ​ = ​ " i c o n i o n ­ w i f i " ​ > < / i > E s c o l h e r u m a r e d e p r e f e r e n c i a l ​ < / a > ​ < a ​ ​ h r e f ​ = ​ " # " ​ ​ c l a s s ​ = ​ " i t e m i t e m ­ i c o n ­ l e f t " > ​ < i ​ ​ c l a s s ​ = ​ " i c o n i o n ­ c a r d " ​ > < / i > A l t e r a r d a d o s d e p a g a m e n t o ​ < / a > < / d i v > 26
  27. O resultado: Outro exemplo de itens combinados: < d i

    v ​ ​ c l a s s ​ = ​ " l i s t c a r d " > ​ < d i v ​ ​ c l a s s ​ = ​ " i t e m i t e m ­ a v a t a r " > ​ < i m g ​ ​ s r c ​ = ​ " i m g / u s e r 1 . p n g " > ​ < h 2 > ​ F á b i o R o g é r i o S J ​ < / h 2 > ​ < p > < b > ​ 3 2 m i n ​ < / b > ​ ­ C o m p a r t i l h o u u m a f o t o ​ < / p > ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " i t e m i t e m ­ b o d y " > ​ < i m g ​ ​ c l a s s ​ = ​ " f u l l ­ i m a g e " ​ ​ s r c ​ = ​ " i m g / m a r i n g a . j p g " > ​ < p > ​ P e n s a e m u m l u g a r s h o w ! R e c o m e n d o t o d o s i r e m v i s i t a r a g r a n d e M a r i n g á n o P a r a n á : ) ​ < / p > ​ < p > ​ < a ​ ​ h r e f ​ = ​ " # " ​ ​ c l a s s ​ = ​ " s u b d u e d " ​ > ​ 1 C u r t i d a ​ < / a > ​ < a ​ ​ h r e f ​ = ​ " # " ​ ​ c l a s s ​ = ​ " s u b d u e d " ​ > ​ 5 C o m e n t á r i o s ​ < / a > ​ < / p > ​ < / d i v > < / d i v > O resultado: 27
  28. Forms Formulários são componentes essenciais para diferente aplicativos e também

    um grande desafio, pois pesquisas revelam que usuários de aplicativos móveis não gostam de preencher formulários grandes em seus ​ devices​ . 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 ​ l a b e l ​ . 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. Vamos aos códigos, crie um novo aplicativo chamado appForms: i o n i c s t a r t a p p F o r m s b l a n k Na área de conteúdo vamos criar três campos e um botão. Cada campos deve estar dentro de um ​ l a b e lque recebe a classe ​ i t e me ​ i t e m ­ i n p u tpara que os campos ocupe 100% do espaço do item da lista e definimos um valor para a propriedade ​ p l a c e h o l d e r ​ , do HTML5, para quando um valor for digitado no campo o rótulo oculte. O botão está em uma outra ​ d i v ​ com a classe ​ p a d d i n g ​ para não ficar colado nas laterias. < i o n ­ l i s t > ​ < l a b e l ​ ​ c l a s s ​ = ​ " i t e m i t e m ­ i n p u t " > ​ < i n p u t ​ ​ t y p e ​ = ​ " t e x t " ​ ​ p l a c e h o l d e r ​ = ​ " N o m e c o m p l e t o " > ​ < / l a b e l > ​ < l a b e l ​ ​ c l a s s ​ = ​ " i t e m i t e m ­ i n p u t " > ​ < i n p u t ​ ​ t y p e ​ = ​ " e m a i l " ​ ​ p l a c e h o l d e r ​ = ​ " E ­ m a i l " > ​ < / l a b e l > ​ < l a b e l ​ ​ c l a s s ​ = ​ " i t e m i t e m ­ i n p u t " > ​ < t e x t a r e a ​ ​ p l a c e h o l d e r ​ = ​ " C o m e n t á r i o " ​ > < / t e x t a r e a > ​ < / l a b e l > < / i o n ­ l i s t > < d i v ​ ​ c l a s s ​ = ​ " p a d d i n g " > ​ < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n b u t t o n ­ b l o c k b u t t o n ­ p o s i t i v e " > E n v i a r c o m e n t á r i o ​ < / b u t t o n > < / d i v > 28
  29. O resultado esperado é: Podemos adicionar um rótulo fixo ao

    lado esquerdo adicionando um ​ s p a ncom a classe i n p u t ­ l a b e l ​ : < l a b e l ​ ​ c l a s s ​ = ​ " i t e m i t e m ­ i n p u t " > ​ < s p a n ​ ​ c l a s s ​ = ​ " i n p u t ­ l a b e l " ​ > ​ U s e r n a m e ​ < / s p a n > ​ < i n p u t ​ ​ t y p e ​ = ​ " t e x t " > < / l a b e l > Para deixar um rótulo fixo no topo adicione a classe ​ i t e m ­ s t a c k e d ­ l a b e l ​ no item: < l a b e l ​ ​ c l a s s ​ = ​ " i t e m i t e m ­ i n p u t i t e m ­ s t a c k e d ­ l a b e l " > ​ < s p a n ​ ​ c l a s s ​ = ​ " i n p u t ­ l a b e l " ​ > ​ P r i m e i r o n o m e ​ < / s p a n > ​ < i n p u t ​ ​ t y p e ​ = ​ " t e x t " ​ ​ p l a c e h o l d e r ​ = ​ " F á b i o " > < / l a b e l > Outra opção interessante para os rótulos do topo é utilizar a classe i t e m ­ f l o a t i n g ­ l a b e l ​ para que o rótulo fique flutuando: < l a b e l ​ ​ c l a s s ​ = ​ " i t e m i t e m ­ i n p u t i t e m ­ f l o a t i n g ­ l a b e l " > ​ < s p a n ​ ​ c l a s s ​ = ​ " i n p u t ­ l a b e l " ​ > ​ S o b r e n o m e ​ < / s p a n > ​ < i n p u t ​ ​ t y p e ​ = ​ " t e x t " ​ ​ p l a c e h o l d e r ​ = ​ " D i g i t e s e u s o b r e n o m e " > < / l a b e l > Os campos podem ser agrupados com botões: < d i v ​ ​ c l a s s ​ = ​ " i t e m i t e m ­ i n p u t ­ i n s e t " > ​ < l a b e l ​ ​ c l a s s ​ = ​ " i t e m ­ i n p u t ­ w r a p p e r " > ​ < i n p u t ​ ​ t y p e ​ = ​ " e m a i l " ​ ​ p l a c e h o l d e r ​ = ​ " E m a i l " > ​ < / l a b e l > ​ < b u t t o n ​ ​ c l a s s ​ = ​ " b u t t o n b u t t o n ­ s m a l l b u t t o n ­ b a l a n c e d " > E n v i a r ​ < / b u t t o n > < / d i v > Também é possível adicionar ícones: 29
  30. < l a b e l ​ ​ c l

    a s s ​ = ​ " i t e m i t e m ­ i n p u t " > ​ < i ​ ​ c l a s s ​ = ​ " i c o n i o n ­ s e a r c h p l a c e h o l d e r ­ i c o n " ​ > < / i > ​ < i n p u t ​ ​ t y p e ​ = ​ " t e x t " ​ ​ p l a c e h o l d e r ​ = ​ " P r o c u r a r . . . " > < / l a b e l > Nosso formulário de exemplo deverá está parecido com o resultado abaixo: Toggle Toggle é um componente criado especificamente para aplicativos móveis, hoje também podemos ver em aplicações web. Crie um novo projeto com o nome appToggle: i o n i c s t a r t a p p T o g g l e b l a n k Vamos criar uma lista de opções sendo cada item um toggle marcado com a classe i t e m ­ t o g g l e ​ , 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. Para complementar nosso exemplo vamos adicionar um card como pergunta: < i o n ­ c o n t e n t ​ ​ c l a s s ​ = ​ " p a d d i n g " > ​ < d i v ​ ​ c l a s s ​ = ​ " c a r d p a d d i n g " > Q u a i s t e c n o l o g i a s v o c ê e s t a a p r e n d e n d o ? ​ < / d i v > ​ < i o n ­ l i s t > 30
  31. ​ < i o n ­ i t e m

    ​ ​ c l a s s ​ = ​ " i t e m ­ t o g g l e " > H T M L 5 ​ < l a b e l ​ ​ c l a s s ​ = ​ " t o g g l e t o g g l e ­ b a l a n c e d " > ​ < i n p u t ​ ​ t y p e ​ = ​ " c h e c k b o x " > ​ < d i v ​ ​ c l a s s ​ = ​ " t r a c k " > ​ < d i v ​ ​ c l a s s ​ = ​ " h a n d l e " ​ > < / d i v > ​ < / d i v > ​ < / l a b e l > ​ < / i o n ­ i t e m > ​ < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " i t e m ­ t o g g l e " > C S S ​ < l a b e l ​ ​ c l a s s ​ = ​ " t o g g l e t o g g l e ­ b a l a n c e d " > ​ < i n p u t ​ ​ t y p e ​ = ​ " c h e c k b o x " > ​ < d i v ​ ​ c l a s s ​ = ​ " t r a c k " > ​ < d i v ​ ​ c l a s s ​ = ​ " h a n d l e " ​ > < / d i v > ​ < / d i v > ​ < / l a b e l > ​ < / i o n ­ i t e m > ​ < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " i t e m ­ t o g g l e " > J a v a S c r i p t ​ < l a b e l ​ ​ c l a s s ​ = ​ " t o g g l e t o g g l e ­ b a l a n c e d " > ​ < i n p u t ​ ​ t y p e ​ = ​ " c h e c k b o x " > ​ < d i v ​ ​ c l a s s ​ = ​ " t r a c k " > ​ < d i v ​ ​ c l a s s ​ = ​ " h a n d l e " ​ > < / d i v > ​ < / d i v > ​ < / l a b e l > ​ < / i o n ­ i t e m > ​ < / i o n ­ l i s t > < / i o n ­ c o n t e n t > O resultado: Checkbox Os checkbox permitem que o usuário selecione um número de itens em um conjunto de opções. Crie um novo projeto chamado appCheckbox: 31
  32. i o n i c s t a r t

    a p p C h e c k b o x b l a n k 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: < i o n ­ l i s t > ​ < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " i t e m ­ c h e c k b o x " > ​ < l a b e l ​ ​ c l a s s ​ = ​ " c h e c k b o x " > ​ < i n p u t ​ ​ t y p e ​ = ​ " c h e c k b o x " > ​ < / l a b e l > H T M L 5 ​ < / i o n ­ i t e m > ​ < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " i t e m ­ c h e c k b o x " > ​ < l a b e l ​ ​ c l a s s ​ = ​ " c h e c k b o x " > ​ < i n p u t ​ ​ t y p e ​ = ​ " c h e c k b o x " > ​ < / l a b e l > C S S ​ < / i o n ­ i t e m > ​ < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " i t e m ­ c h e c k b o x " > ​ < l a b e l ​ ​ c l a s s ​ = ​ " c h e c k b o x c h e c k b o x ­ a s s e r t i v e " > ​ < i n p u t ​ ​ t y p e ​ = ​ " c h e c k b o x " > ​ < / l a b e l > J a v a S c r i p t ​ < / i o n ­ i t e m > < / i o n ­ l i s t > 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: i o n i c s t a r t a p p R a d i o B u t t o n s b l a n k 32
  33. Vamos criar um subHeader e uma lista, na lista vamos

    adicionar alguns radio buttons. o b o d y ​ da página deverá estar assim: < b o d y ​ ​ n g ­ a p p ​ = ​ " s t a r t e r " > ​ < i o n ­ p a n e > ​ < i o n ­ h e a d e r ­ b a r ​ ​ c l a s s ​ = ​ " b a r ­ p o s i t i v e " ​ ​ a l i g n ­ t i t l e ​ = ​ " c e n t e r " > ​ < h 1 ​ ​ c l a s s ​ = ​ " t i t l e " ​ > ​ E x e m p l o R a d i o B u t t o n s ​ < / h 1 > ​ < / i o n ­ h e a d e r ­ b a r > ​ < i o n ­ h e a d e r ­ b a r ​ ​ c l a s s ​ = ​ " b a r ­ s u b h e a d e r b a r ­ c a l m " ​ ​ a l i g n ­ t i t l e ​ = ​ " c e n t e r " > ​ < h 1 ​ ​ c l a s s ​ = ​ " t i t l e " ​ > ​ Q u a l t e c n o l o g i a v o c ê m a i s d o m i n a ? ​ < / h 1 > ​ < / i o n ­ h e a d e r ­ b a r > ​ < i o n ­ c o n t e n t > ​ < i o n ­ l i s t > ​ < i o n ­ r a d i o > ​ P H P ​ < / i o n ­ r a d i o > ​ < i o n ­ r a d i o > ​ J a v a ​ < / i o n ­ r a d i o > ​ < i o n ­ r a d i o > ​ J a v a S c r i p t ​ < / i o n ­ r a d i o > ​ < i o n ­ r a d i o > ​ . N E T ​ < / i o n ­ r a d i o > ​ < i o n ­ r a d i o > ​ R u b y ​ < / i o n ­ r a d i o > ​ < i o n ­ r a d i o > ​ P y t h o n ​ < / i o n ­ r a d i o > ​ < i o n ­ r a d i o > ​ G o ​ < / i o n ­ r a d i o > ​ < / i o n ­ l i s t > ​ < / i o n ­ c o n t e n t > ​ < / i o n ­ p a n e > < / b o d y > O resultado: Range O componente Range é utilizado para definir um intervalo de valores com o clicar e arrastar do toque. É possível customizar seus ícones e cores. Crie um novo projeto com o nome appRange: i o n i c s t a r t a p p R a n g e b l a n k 33
  34. Adicione na área de conteúdo algumas opção com cores diferente

    para exemplificar o componente: < i o n ­ l i s t > ​ < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " r a n g e r a n g e ­ p o s i t i v e " > ​ < i ​ ​ c l a s s ​ = ​ " i c o n i o n ­ i o s ­ s u n n y ­ o u t l i n e " ​ > < / i > ​ < i n p u t ​ ​ t y p e ​ = ​ " r a n g e " ​ ​ m i n ​ = ​ " 0 " ​ ​ m a x ​ = ​ " 1 0 0 " ​ ​ v a l u e ​ = ​ " 1 2 " > ​ < i ​ ​ c l a s s ​ = ​ " i c o n i o n ­ i o s ­ s u n n y " ​ > < / i > ​ < / i o n ­ i t e m > ​ < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " r a n g e r a n g e ­ c a l m " > ​ < i ​ ​ c l a s s ​ = ​ " i c o n i o n ­ i o s ­ l i g h t b u l b ­ o u t l i n e " ​ > < / i > ​ < i n p u t ​ ​ t y p e ​ = ​ " r a n g e " ​ ​ m i n ​ = ​ " 0 " ​ ​ m a x ​ = ​ " 1 0 0 " ​ ​ v a l u e ​ = ​ " 2 5 " > ​ < i ​ ​ c l a s s ​ = ​ " i c o n i o n ­ i o s ­ l i g h t b u l b " ​ > < / i > ​ < / i o n ­ i t e m > ​ < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " r a n g e r a n g e ­ b a l a n c e d " > ​ < i ​ ​ c l a s s ​ = ​ " i c o n i o n ­ i o s ­ b o l t ­ o u t l i n e a s s e r t i v e " ​ > < / i > ​ < i n p u t ​ ​ t y p e ​ = ​ " r a n g e " ​ ​ m i n ​ = ​ " 0 " ​ ​ m a x ​ = ​ " 1 0 0 " ​ ​ v a l u e ​ = ​ " 3 8 " > ​ < i ​ ​ c l a s s ​ = ​ " i c o n i o n ­ i o s ­ b o l t a s s e r t i v e " ​ > < / i > ​ < / i o n ­ i t e m > < / i o n ­ l i s t > O resultado: Select O componente de seleção listada é muito utilizado em sistemas desktop e web, o Ionic não customiza muito este componente pois os próprios ​ browsers​ , de cada sistema operacional móvel, já customizam a visualização com o seu padrão. Neste momento vamos testar apenas no ​ browser​ do desktop. Crie um novo projeto com o nome appSelect: i o n i c s t a r t a p p S e l e c t b l a n k Adicione uma lista com um item contendo um ​ i n p u t ​ de ​ s e l e c t ​ : 34
  35. < i o n ­ c o n t e

    n t > ​ < i o n ­ l i s t > ​ < i o n ­ i t e m ​ ​ c l a s s ​ = ​ " i t e m ­ i n p u t i t e m ­ s e l e c t " > ​ < d i v ​ ​ c l a s s ​ = ​ " i n p u t ­ l a b e l " > Q u a l f l u t a v o c ê m a i s g o s t a ? ​ < / d i v > ​ < s e l e c t > ​ < o p t i o n > ​ L a r a n j a ​ < / o p t i o n > ​ < o p t i o n ​ ​ s e l e c t e d ​ > ​ M a ç a ​ < / o p t i o n > ​ < o p t i o n > ​ B a n a n a ​ < / o p t i o n > ​ < o p t i o n > ​ C a q u i ​ < / o p t i o n > ​ < o p t i o n > ​ G o i a b a ​ < / o p t i o n > ​ < / s e l e c t > ​ < / i o n ­ i t e m > ​ < / i o n ­ l i s t > < / i o n ­ c o n t e n t > O resultado nos diferentes ​ devices​ : No ​ browser​ desktop: No Android: No iOS: 35
  36. 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: i o n i c s t a r t a p p T a b s b l a n k 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: < b o d y ​ ​ n g ­ a p p ​ = ​ " s t a r t e r " > ​ < i o n ­ p a n e > ​ < i o n ­ h e a d e r ­ b a r ​ ​ c l a s s ​ = ​ " b a r ­ a s s e r t i v e " > ​ < h 1 ​ ​ c l a s s ​ = ​ " t i t l e " ​ > ​ E x e m p l o t a b s ​ < / h 1 > ​ < / i o n ­ h e a d e r ­ b a r > ​ < i o n ­ t a b s ​ ​ c l a s s ​ = ​ " t a b s ­ a s s e r t i v e t a b s ­ i c o n ­ t o p " > ​ < i o n ­ t a b ​ ​ t i t l e ​ = ​ " H o m e " ​ ​ i c o n ­ o n ​ = ​ " i o n ­ i o s ­ f i l i n g " i c o n ­ o f f ​ = ​ " i o n ­ i o s ­ f i l i n g ­ o u t l i n e " > ​ < i o n ­ v i e w > ​ < i o n ­ c o n t e n t ​ ​ c l a s s ​ = ​ " p a d d i n g " > C o n t e ú d o d o t a b H o m e ​ < / i o n ­ c o n t e n t > ​ < / i o n ­ v i e w > ​ < / i o n ­ t a b > ​ < i o n ­ t a b ​ ​ t i t l e ​ = ​ " S o b r e " ​ ​ i c o n ­ o n ​ = ​ " i o n ­ i o s ­ c l o c k " i c o n ­ o f f ​ = ​ " i o n ­ i o s ­ c l o c k ­ o u t l i n e " > ​ < i o n ­ v i e w > ​ < i o n ­ c o n t e n t ​ ​ c l a s s ​ = ​ " p a d d i n g " > C o n t e ú d o d o t a b S o b r e ​ < / i o n ­ c o n t e n t > ​ < / i o n ­ v i e w > ​ < / i o n ­ t a b > ​ < i o n ­ t a b ​ ​ t i t l e ​ = ​ " C o n f i g u r a ç õ e s " ​ ​ i c o n ­ o n ​ = ​ " i o n ­ i o s ­ g e a r " i c o n ­ o f f ​ = ​ " i o n ­ i o s ­ g e a r ­ o u t l i n e " > ​ < i o n ­ v i e w > ​ < i o n ­ c o n t e n t ​ ​ c l a s s ​ = ​ " p a d d i n g " > C o n t e ú d o d o t a b C o n f i g u r a ç õ e s ​ < / i o n ­ c o n t e n t > ​ < / i o n ­ v i e w > 36
  37. ​ < / i o n ­ t a b

    > ​ < / i o n ­ t a b s > ​ < / i o n ­ p a n e > < / b o d y > 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 ​ ­ ­ l a bno final do comando para testar o aplicativo no ​ browser​ : i o n i c s e r v e ​ ­ ­ l a b Será exibido desta forma no seu ​ browser​ : 37
  38. 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: i o n i c s t a r t a p p G r i d b l a n k Vamos criar uma grid simples com duas linhas e duas colunas, adicione na área de conteúdo o componente: < i o n ­ c o n t e n t > ​ < d i v ​ ​ c l a s s ​ = ​ " r o w " > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l " ​ > ​ 1 ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l " ​ > ​ 2 ​ < / d i v > ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " r o w " > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l " ​ > ​ 3 ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l " ​ > ​ 4 ​ < / d i v > ​ < / d i v > < / i o n ­ c o n t e n t > 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 t y l e . c s s ​ da pasta css: / * E m p t y . A d d y o u r o w n C S S i f y o u l i k e * / . ​ c o l { b a c k g r o u n d ​ ­ ​ c o l o r ​ : ​ ​ # C C C ; b o r d e r ​ : ​ 2 p x ​ s o l i d ​ # f f f ; } Podemos ver o resultado: É possível definir um tamanho fixo para uma determinada coluna. Adicione uma nova linha: < d i v ​ ​ c l a s s ​ = ​ " r o w " > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l c o l ­ 5 0 " ​ > ​ 5 ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l " ​ > ​ 6 ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l " ​ > ​ 7 ​ < / d i v > 38
  39. < / d i v > 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: Os tamanhos possível podem ser vistos na tabela abaixo: Classe Tamanho ocupado . c o l ­ 1 0 10% . c o l ­ 2 0 20% . c o l ­ 2 5 25% . c o l ­ 3 3 33.3333% . c o l ­ 5 0 50% . c o l ­ 6 7 66.6666% . c o l ­ 7 5 75% . c o l ­ 8 0 80% . c o l ­ 9 0 90% Outro recurso é deixar uma coluna em branco, ou seja, reservar o espaço porem não exibir nenhum elemento, adicione uma nova linha: < d i v ​ ​ c l a s s ​ = ​ " r o w " > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l c o l ­ 3 3 c o l ­ o f f s e t ­ 3 3 " ​ > ​ 8 ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l " ​ > ​ 9 ​ < / d i v > < / d i v > Resultado: 39
  40. Os tamanhos para os espaços em branco são os mesmos

    da tabela acima, porem o nome deve ser ​ c o l ­ o f f s e t ­ T A M A N H O ​ . 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: < d i v ​ ​ c l a s s ​ = ​ " r o w " > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l c o l ­ t o p " ​ > ​ 1 0 ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l c o l ­ c e n t e r " ​ > ​ 1 1 ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l c o l ­ b o t t o m " ​ > ​ 1 2 ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l " ​ > ​ 1 3 ​ < b r > ​ 1 4 ​ < b r > ​ 1 5 ​ < b r > ​ 1 6 ​ < / d i v > < / d i v > Veja os alinhamentos: Caso o alinhamento for para a linha inteira adicione a classe direto no ​ r o wao invés de adicionar na ​ c o l ​ desta forma: < d i v ​ ​ c l a s s ​ = ​ " r o w ​ r o w ­ t o p ​ " > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l " ​ > ​ 1 0 ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l " ​ > ​ 1 1 ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l " ​ > ​ 1 2 ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l " ​ > ​ 1 3 ​ < b r > ​ 1 4 ​ < b r > ​ 1 5 ​ < b r > ​ 1 6 ​ < / d i v > < / d i v > 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: < d i v ​ ​ c l a s s ​ = ​ " r o w r e s p o n s i v e ­ s m " > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l " ​ > ​ 1 7 ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l " ​ > ​ 1 8 ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l " ​ > ​ 1 9 ​ < / d i v > ​ < d i v ​ ​ c l a s s ​ = ​ " c o l " ​ > ​ 2 0 ​ < / d i v > < / d i v > 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
  41. Tela menor: Tela maior: Os tamanhos validados podem ser visto

    na tabela a baixo juntamente com suas respectivas classes de utilização: Classe Quebrar quando . r e s p o n s i v e ­ s m For menor que telefone em visualização modo paisagem . r e s p o n s i v e ­ m d For menor que tablet em visualização modo retrato . r e s p o n s i v e ­ l g For menor que tablet em visualização modo paisagem Estas são classes criadas pelo ​ framework​ , mas nada impede de você criar seus próprios tamanhos e validação de responsividade. Conclusão sobre componentes Aprendemos e testamos todos os componentes, de HTML e CSS, do Ionic framework, agora você tem uma visão ampla do que é possível fazer com os componentes já prontos do Ionic, mas lembre-se, você pode, e deve, criar seus próprios componentes com CSS. Em outro ebook iremos abordar customização de componentes, bem como a criação de novos estilos. Você pode consultar a documentação oficial dos componentes do Ionic Framework no link: ​ http://ionicframework.com/docs/components/ 41
  42. 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​ . Primeiro passo é baixar o Android SDK no site oficial do Android Developer (​ http://developer.android.com/intl/pt-br/sdk/index.html​ ). Role até o final da página e baixe apenas o SDK para linha de comando, como mostrado na imagem abaixo. Escolha o seu sistema operacional e faça o download: 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
  43. 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: Clique em ​ V i s i t j a v a . o r a c l e . c o m ​ e siga os passos abaixo: 43
  44. 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
  45. 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
  46. Em seguida clique em ​ Accept License e ​ Install

    ​ para o download começar. Este processo pode demorar alguns minutos. Ao concluir a tela abaixo será apresentada: 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​ e ​ Variáveis de Ambiente​ : 46
  47. Em variáveis do usuário adicione uma nova chamada ​ A

    N D R O I D _ H O M E e 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: i o n i c p l a t f o r m a d d a n d r o i d i o n i c b u i l d a n d r o i d Se o build ocorrer correto uma mensagem será exibida em seu terminal parecida com essa: B U I L D S U C C E S S F U L T o t a l t i m e : 2 m i n s 5 7 . 6 5 7 s e c s B u i l t t h e f o l l o w i n g a p k ( s ) : C : / w o r k s p a c e / a p p 1 / p l a t f o r m s / a n d r o i d / b u i l d / o u t p u t s / a p k / a n d r o i d ­ d e b u g . a p k Na ultima linha é apresentado o caminho onde foi gerado o aplicativo final, no caso o a n d r o i d ­ d e b u g . a p k ​ . Para testar em seu ​ device​ basta instalar este arquivo nele. Se você se deparar com algum erro deixe sua mensagem nesta ​ lista de discussão​ . Para testar em emuladores ou até mesmo fazer a instalação direto em seu ​ device​ , sem precisar copiar o arquivo apk, ​ leia este post​ em meu site com várias opções e formas. 47
  48. 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. O Ionic.io, que é a plataforma de soluções em nuvem para aplicativos implementados em Ionic Framework, fornece uma solução para compilar o projeto para iOS sem precisar de uma maquina Mac, porem este serviço é ​ free com limitações. Iremos falar sobre o Ionic.io em outro ebook. Para compilar nosso projeto vamos precisar do ​ i o s ­ s i m ​ , 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: n p m i n s t a l l ­ g i o s ­ s i m Em seguida, dentro da pasta do projeto, digite: i o n i c b u i l d i o s Este processo ira compilar nosso aplicativo e agora podemos abri-lo via Xcode para emular ou rodar em um ​ device​ com iOS. Dentro da pasta platforms/ios foi criado um arquivo ​ A p p L i s t I m a g e . x c o d e p r o j ​ , que é o arquivo inicializador do projeto em Xcode: De um duplo clique neste arquivo e o projeto será aberto no Xcode: 48
  49. 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
  50. 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