SlideShare uma empresa Scribd logo
1 de 35
HTML5 MOBILE
Front-end Web para Mobile Apps
EMENTA
• Imersão  em mobile browsers
• Mobile Displays
• Touchscreen
• Sensores
• Frameworks e bibliotecas




                         3
O QUE VEREMOS AGORA
• Imersão    em mobile browsers
 • Detecção de Mobile browsers e funcionalidades
 • Particularidades
 • Estratégias para aplicativos mobile
 • Simuladores Android, iOS e Blackberry

• MobileDisplays
• Touchscreen
• Sensores
• Frameworks e bibliotecas




                                         4
MOBILE BROWSERS




         5
MOBILE BROWSERS




         5
MOBILE BROWSERS




         5
DETECÇÃO DE BROWSERS
• window.navigator
 •   Assinatura do browser capturada no Javascript
• User-Agent
 •   Cabeçalho HTTP que retém a assinatura do browsers
     •   Ex (php):
     •   <?php
         if(preg_match('Android|BlackBerry|PalmSource|iPhone|iPad' .
                 'Samsung|Nokia|MIDP|SymbianOS',
                  $ _SERVER[‘HTTP_USER_AGENT’]) {
             echo "Mobile Browser na área";
         }
         ?>
     •   http://detectmobilebrowsers.com/
     •   http://www.useragentstring.com/pages/Mobile%20Browserlist/


                                       6
TERA-WURFL
• Wireless       Universal Resource File
 •   Banco de dados universal de todos os dispositivos móveis do
     planeta.
 •   Projeto em PHP com base de dados MySQL, MSSQL ou
     MongoDB que deve ser instalado no seu servidor
 •   Disponível também via Webservice
 •   Base alimentada por usuários no mundo inteiro:
     •   https://db.scientiamobile.com/

 •   Mais informações:
     •   http://dbapi.scientiamobile.com




                                      7
MODERNIZR
• Script
       de uso geral para detecção das
 capacidades do navegador
  •   Cria dinamicamente classes na tag <html> para diversas
      funcionalidades presentes no navegador
      •   class="js no-touch postmessage history multiplebgs boxshadow
          opacity cssanimations csscolumns cssgradients csstransforms
          csstransitions fontface localstorage sessionstorage svg inlinesvg no-
          blobbuilder blob bloburls download formdata wf-active"

  •   Ajuda na hora de implementar seu css:
      •   #meuDiv { background: url(‘img/sombra.png’); }
      •   .boxshadow #meuDiv {
            background: none;
            box-shadow: 1px 2px 2px rgba(0, 0, 0, 0.20);
          }



                                        8
MODERNIZR
• Script
       de uso geral para detecção das
 capacidades do navegador
  •   Possui uma API javascript simples para detecção de
      funcionalidades
      •   if (Modernizr.touch) {
              // código com touch
          } else {
              // código com click
          }




                                    9
PARTICULARIDADES MOBILE
•O mundo mobile é:
• Menor
 •   Handsets (smartphones) foram feitos para caberem na palma
     da mão
• Mais   variado
 •   Aspectos, densidades, orientações, métodos de input (dpad,
     trackball, touch, multitouch)
• Mais   difícil
 •   Handsets são muitas vezes manuseados pelo polegar (um
     dedo meio estabanado)
 •   Mesmo usando o indicador, a precisão não é a mesma de um
     mouse (e não há ponteiros passeando na tela)




                               10
ESTRATÉGIAS
• Site   exclusivo para mobile devices
  •   Cheque o UserAgent no servidor e redirecione para uma
      versão exclusivamente mobile do site
  •   Prós: Maior simplicidade na construção da interface do projeto
  •   Contras: Mais de um ponto de manutenção do sistema
• Site   adaptável (responsivo)
  •   Utilize Media Queries
  •   Cheque capacidades dinamicamente
  •   Prós: Único projeto para todas as plataformas
  •   Contras: Construção da interface muito mais complexa




                                 11
ESTRATÉGIAS
• Mobile    Web App
 •   Aplicativos acessíveis a partir do próprio navegador
 •   Prós: Não há a necessidade de instalação prévia
 •   Contras: Perdem espaço com áreas do próprio navegador e
     não ficam presentes em home screen do usuário
• Mobile    Standalone App
 •   Aplicativos acessíveis após instalação
 •   Prós: Ficam como ícones em home screen, podem ser
     encontrados em lojas como Apple Store e Google Play e
     suprimem espaços mortos das barras do browser
 •   Contras: Mais complexos. Normalmente, devem usar Cache
     API, Storage API e realizar checagem online/offline do
     navegador para sincronizações de dados




                                 12
SIMULANDO AMBIENTE
• Apple    iOS
 •   iOS Simulator, disponível apenas para Mac e já vem no pacote
     de instalação do XCode
 •   https://developer.apple.com/devcenter/ios/index.action
• Google     Android
 •   Android Virtual Device (AVD)
 •   http://developer.android.com/sdk/index.html
• RIM   BlackBerry
 •   Máquina virtual VMWare simulando o S.O. do celular
 •   http://us.blackberry.com/developers/resources/simulators.jsp




                                    13
IOS SIMULATOR




      14
ANDROID EMULATOR




       15
O QUE VEREMOS AGORA
• Imersão em mobile browsers
• Mobile Displays
 • Resoluções, dimensões, densidades, aspect-ratios e zoom
 • Meta Viewport e cálculos de espaço

• Touchscreen
• Sensores
• Frameworks       e bibliotecas




                                        16
MOBILE DISPLAYS
• Dimensões
 •   Celulares evoluíram desde mecanismos grandes com telas pequenas
     para produtos finos e leves com amplas telas de altíssima resolução
     •   No mundo mobile, menos sempre foi mais. Quanto menor (e mais leve) fosse o
         aparelho, mais portátil e atraente. Foi essa característica que tornou os
         celulares tão presentes e indispensáveis no mundo atual
     •   Por outro lado, quanto maior e mais clara é a tela, mais versátil é o produto.
         Ou seja, é possível ler, jogar, assistir a vídeos e realizar atividades profissionais
         e cotidianas se o produto for pequeno o suficiente com tela grande o bastante
     •   O iPhone se popularizou com a dimensão de tela 3.5”, mas outros
         smartphones vieram acima das 4” e os tablets podem ultrapassar 10” de tela.
     •   A diversidade de dimensões e proporções dificulta a vida das webapps




                                            17
MOBILE DISPLAYS
• Resoluções
 •   A evolução dos desktops sempre foi pautada na capacidade de se
     obter maior resolução.
 •   As telas foram cada vez cabendo mais conteúdo e em geral as coisas
     sempre foram suficientemente legíveis
     •   Os primeiros monitores de S.O.s gráficos foram capazes de, em 14”, exibir
         640x480 pixels
     •   Com a evolução das placas de vídeo e a popularização dos monitores de 15”
         de telas planas, a resolução 800x600 pixels ditou os limites dos sites por anos
     •   Monitores CRT de 17” foram em geral utilizando resoluções 1024x768 pixels
     •   Em um aumento de pouco mais de 20% da tela, houve um aumento de mais
         de 60% de resolução e mesmo assim coisas ficaram ainda mais nítidas
 •   O monitores LCD e LED conseguiram “acochar” ainda mais os pixels
     e resoluções ainda maiores vieram em telas de dimensões similares
     •   O aspect-ratio padrão passou de 4:3 (padrão de TV) para 16:10 (widescreen) e
         alguns até 16:9 (cinema) e não variaram mais além disso



                                          18
O QUE É UM PÍXEL?
• Pixels    físicos
  •   Pontos reais do dispositivo. Sua capacidade de exibir pontos de luz.
• CSS     Pixels
  •   Pontos físicos que compõem uma tela máxima imaginária chamada
      de layout viewport
• Device     Pixels
  •   Antigamente, o mesmo que pixels físicos
  •   Os Androids passaram a informar pixels diferentes dos reais do
      aparelho a partir de padrões de densidade (DPI - Dots Per Inch)
  •   Os iPhones seguiram a idéia com o conceito de Retina Display




                                     19
MOBILE DISPLAYS
• Resoluções          e aspect-ratio em aparelhos móveis
 •   Celulares foram criados para ligar, mas aos poucos foram tomando a
     forma de outros produtos portáteis de nosso dia a dia
     •   Isso fez gerar uma infinidade de tamanhos, resoluções e aspectos de telas
 •   Nos dispositivos móveis, a busca por maiores resoluções sempre
     existiu, no entanto, esbarra-se no que é possível enxergar
• Overview        mode
 •   Os browsers dos celulares nasceram navegando por páginas criadas
     para o mundo desktop, onde cabe mais coisas legivelmente
     •   Usuários não costumas gostar de conteúdo com rolagem horizontal. Fica difícil
         ler se a cada linha temos que rolar a tela
     •   A solução para browsers mobile foi aplicar zoom out para visão geral de todo o
         conteúdo de telas que não foram criadas pensando neles
     •   Hoje, webapps focadas em dispositivos móveis são feitas para caberem
         nesses aparelhos sem a necessidade do zoom out padrão do navegador




                                         20
ZOOM
• Browsers possuem a capacidade de condensar
 pixels em operações de zoom
 •   Quando há um zoom out, os pixels CSS
     passam a ocupar um espaço menor do que
     os pixels do dispositivo (device pixels)
 •   Quando há um zoom in, os pixels CSS vão
     consumir mais pixels do dispositivo para
     exibir o conteúdo


• Dispositivospodem assim ser capazes de
 renderizar na área visível uma resolução maior do
 que a indicada em seus device pixels
     •   http://www.quirksmode.org/blog/archives/2010/04/a_pixel_is_not.html
     •   http://www.alistapart.com/articles/a-pixel-identity-crisis/




                                            21
DENSIDADE
•   Maior resolução no mesmo espaço de tela significa maior densidade
    de pixels, medida em PPI (pixels per inch)
    •   Para saber a densidade de uma tela faça os seguintes cálculos:




    •   Eleve a largura da tela ao quadrado, faça o mesmo com a altura e some os
        resultados
    •   Tire a raíz quadrada desta soma anterior e divida pela dimensão em polegadas
        da tela
    •   Exemplo da tela padrão do Macbook Pro de 13”:
    •   w = 1280, h = 800
    •   dp = Math.sqrt(1638400 + 640000) = 1509.4369811290567
    •   PPI = 1509.4369811290567 / 13” = 116.11
    •   http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density




                                         22
MEDIDAS DO IPHONE
• Tela     de 3.5” com resolução 320x480 pixels
  •   Aspect-ratio de 1.5 (ou 2:3) vertical na área total e 1.1125 no
      viewport
  •   Densidade de
      165PPI
      •   Já é acima do
          praticado em
          monitores
          desktop
          ou notebooks




                                        23
MAIS ESPAÇO NO IPHONE
• Prática
        para se obter mais 60px de viewport no
 iPhone (retirando a barra de endereços)
 •   Evitar zoom do usuário e escalar para o tamanho do dispositivo
     •   <meta name="viewport" content="user-scalable=no, width=device-
         width, initial-scale=1 maximum-scale=1"/>

 •   Ampliar o conteúdo para além da área visível sem a barra
     •   body {min-height: 416px;}

 •   Provocar um scroll para o primeiro pixel do conteúdo
     •   window.scrollTo(0,1);
     •   Todo scroll Javascript faz o Safari calcular se é interessante retirar a barra a
         fim de ganhar espaço. No Android, o Firefox e o Ópera já retiram a barra
         sem precisar desta prática.



                                            24
MAIS ESPAÇO NO IPHONE
•OSafari permite salvar uma página como aplicativo
standalone. Basta seguir os passos:
 •   Solicitar fullscreen (retirar a barra de
     endereço e de botões)
     •   <meta name="apple-mobile-web-app-capable"
         content="yes" />

 •   Mandar salvar a página como aplicativo


 •   Adicionar à Home Screen
 •   Após salvar, clique no ícone da app
     para abri-la em fullscreen
     •   http://mobile.tutsplus.com/tutorials/
         mobile-web-apps/remove-address-bar/



                                         25
IOS WEBAPP
•É possível detectar se a webapp está rodando em
 modo browser (como uma página) ou diretamente
 como aplicativo
 •   Propriedade navigator.standalone (false se foi chamada pelo
     browser)
 •   Pode ser uma boa prática verificar se a app não está standalone
     (está em modo browser) para sugerir que salve na Home Screen
 •   if (!navigator.standalone) {
          alert(‘Adicione esta aplicação à sua Home Screen para chamá-la
                 diretamente sem precisar do navegador’);
     }




                                    26
RETINA DISPLAY
• Em 2010, o iPhone 4 aumentou a densidade de
 pixels de seu display de 165ppi para 330ppi
 •   A Apple, por jogada de marketing, chamou isso de retina display,
     alegando que acima de 300ppi, o olho humano não consegue mais
     detectar os limites dos pixels, assim, com 330, ela colocou 30 pixels
     além da nossa capacidade de perceber
 •   Isso dobrou a resolução
     do dispositivo, de
     320x480px para
     impressionantes
     640x960px em uma tela
     de apenas 3.5”
 •   O lado negativo foi que
     todas as webapps vistas
     no novo iPhone
     passariam a ocupar
     apenas metade do
     espaço do viewport



                                    27
IPHONE PIXEL RATIO
• window.devicePixelRatio
 •   A fim de continuar exibindo as webapps do mesmo jeito, esta
     variável foi criada nos dispositivos móveis mais modernos
 •   Ela aponta a razão de device pixels para CSS pixels
 •   O iPhone 4, retina display, veio com um devicePixelRatio de
     2. Ou seja, 1px no CSS (e no Javascript) ocupa 2px no
     dispositivo
     •   Assim, screen.width e screen.height continuaram apresentando
         320X480px e as webapps existentes não quebraram




                                     28
MEDIDAS DOS ANDROIDS
• Variam    bastante por aparelho
 •   Desde 176 x 220 em celulares mais simples,
     passandos por 480 x 800 de alguns
     Androids, (ex.: Samsung Galaxy SII),
     chegando a 2560x1600 em tablets
 •   Existem padrões de classificação de
     tamanhos e densidades (low, medium,
      high, extra high)




                                    29
ANDROID PIXEL RATIO
• window.devicePixelRatio                 no Android
 •   A linha top dos dispositivos Android está acima de 200ppi de
     densidade (hdpi e xhdpi).
     •   Nos casos dos aparelhos com resolução 480x800px, o
         devicePixelRatio dos browsers costumam ser de 1.5, ou seja 3 device
         pixels para cada 2 css pixels

 •   Linha Samsung Galaxy
     •   O Galaxy Note possui resolução de 800x1280px (a mesma do
         Macbook Pro de 13”, em uma tela de 5.3”). Possui devicePixelRatio
         no Opera Mobile acima de 2
     •   O Galaxy SIII chegou a 306ppi e apresenta devicePixelRatio acima de
         2 também. Curiosamente, abandonou o aspect-ratio de 16:10 em
         função do 16:9 em resolução de 1280x720px (padrão HD 720p) na
         sua tela de 4,8”


                                     30
DENSIDADE EM TABLETS
 •   Tablets Android não costumam repetir a mesma densidade
     dos smartphones
     •   Acer Iconia Pad, Motorola Xoom 2 e Galaxy Tab são mdpi, não
         chegando a 150ppi. O Amazon Kindle Fire é mais denso mas só
         atinge 170ppi

 •   Asus Google Nexus 7 (Android Jelly Bean)
     •   Lançado em Junho de 2012, alcançou a resolução de 1280x800px
         (aspecto 16:10) em uma tela de 7”. Densidade de 216ppi.
     •   Ainda abaixo dos 264ppi do iPad 3. Este pode chegar a
         2048x1536px, em sua tela de 9,7”. Aspect-ratio de 4:3

 •   Microsoft Surface
     •   Sua versão Pro chega a 1920x1080px (padrão Full HD, aspecto 16:9)
         em tela de 10.6”, o que dá uma densidade de 208ppi



                                     31
META VIEWPORT
•   width/height
    •   Dimensões em CSS pixels
        •   Ex.: <meta name="viewport" content="width=320px">

•   device-width/height
    •   Dimensões em device pixels. Read only
•   initial-scale:
    •   Nível de zoom inicial do viewport
        •   Ex.: <meta name="viewport" content="initial-scale=1">

•   user-scalable:
    •   Booleano que indica se será possível ou não aplicar zoom
        •   Ex.: <meta name="viewport" content="user-scalable=no">
•   Ex. geral:
    <meta name="viewport" content="width=device-width,user-scalable=no, initial-scale=1">



                                            32
CÁLCULOS DE ESPAÇO
• Javascript
 •   screen.width/height: Largura e altura da tela em device pixels
     •   Alguns browsers subtraem o espaço da barra superior no Android
 •   window.innerWidth/Height: Largura e altura da janela aberta
     •   Medida de espaço da área da janela, em CSS pixels
     •   muda quando se dá zoom, quanto menos zoom, mais espaço
 •   element.client/offset/scrollWidth/Height: Espaço do elemento


 •   Referências:
     •   http://dev.opera.com/articles/view/an-introduction-to-meta-viewport-and-
         viewport/
     •   http://www.howtocreate.co.uk/tutorials/javascript/browserwindow




                                         33

Mais conteúdo relacionado

Destaque

Aula 1 linguagem html (1)
Aula 1   linguagem html (1)Aula 1   linguagem html (1)
Aula 1 linguagem html (1)
Kaoru Hatake
 

Destaque (15)

Aula3 HTML 5 - Multimídia
Aula3 HTML 5 - MultimídiaAula3 HTML 5 - Multimídia
Aula3 HTML 5 - Multimídia
 
HTML5 Mobile - Aula 3 - Device Orientation
HTML5 Mobile - Aula 3 - Device OrientationHTML5 Mobile - Aula 3 - Device Orientation
HTML5 Mobile - Aula 3 - Device Orientation
 
HTML
HTMLHTML
HTML
 
Html 01
Html 01Html 01
Html 01
 
Design Gráfico para Web: HTML 5 - Multimídia
Design Gráfico para Web: HTML 5 - MultimídiaDesign Gráfico para Web: HTML 5 - Multimídia
Design Gráfico para Web: HTML 5 - Multimídia
 
Html básico 4 tabelas
Html básico 4   tabelasHtml básico 4   tabelas
Html básico 4 tabelas
 
Creative Pedagogy and Mobile Education
Creative Pedagogy and Mobile EducationCreative Pedagogy and Mobile Education
Creative Pedagogy and Mobile Education
 
Minicurso Web. Front-end e HTML5 (parte 1)
Minicurso Web. Front-end e HTML5 (parte 1)Minicurso Web. Front-end e HTML5 (parte 1)
Minicurso Web. Front-end e HTML5 (parte 1)
 
Resumo html 2012 exercícios 01 21
Resumo html 2012   exercícios 01 21Resumo html 2012   exercícios 01 21
Resumo html 2012 exercícios 01 21
 
Aula 1 linguagem html (1)
Aula 1   linguagem html (1)Aula 1   linguagem html (1)
Aula 1 linguagem html (1)
 
Desenvolvimento-web-com-html-css-e-javascript
Desenvolvimento-web-com-html-css-e-javascriptDesenvolvimento-web-com-html-css-e-javascript
Desenvolvimento-web-com-html-css-e-javascript
 
Html5 Aula 3
Html5 Aula 3Html5 Aula 3
Html5 Aula 3
 
Html5 aula 01
Html5 aula 01Html5 aula 01
Html5 aula 01
 
Rotina diaria
Rotina diariaRotina diaria
Rotina diaria
 
Francês
FrancêsFrancês
Francês
 

Semelhante a HTML5 Mobile Aula 1

Semelhante a HTML5 Mobile Aula 1 (20)

Jquery Mobile
Jquery MobileJquery Mobile
Jquery Mobile
 
Android iOS Híbridos
Android iOS HíbridosAndroid iOS Híbridos
Android iOS Híbridos
 
Web Design Responsivo
Web Design ResponsivoWeb Design Responsivo
Web Design Responsivo
 
8ºConnecting Knowledge Web ou App
8ºConnecting Knowledge Web ou App8ºConnecting Knowledge Web ou App
8ºConnecting Knowledge Web ou App
 
Web ou App?
Web ou App?Web ou App?
Web ou App?
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
 
Mobile Apps Cross-Platform
Mobile Apps Cross-PlatformMobile Apps Cross-Platform
Mobile Apps Cross-Platform
 
Desenvolvendo APPs para múltiplas resoluções
Desenvolvendo APPs para múltiplas resoluçõesDesenvolvendo APPs para múltiplas resoluções
Desenvolvendo APPs para múltiplas resoluções
 
Desenvolvendo APPs para múltiplas resoluções
Desenvolvendo APPs para múltiplas resoluçõesDesenvolvendo APPs para múltiplas resoluções
Desenvolvendo APPs para múltiplas resoluções
 
Sapo Sessions - Web Mobile
Sapo Sessions - Web MobileSapo Sessions - Web Mobile
Sapo Sessions - Web Mobile
 
Android: mercado mobile e visão geral da plataforma
Android: mercado mobile e visão geral da plataformaAndroid: mercado mobile e visão geral da plataforma
Android: mercado mobile e visão geral da plataforma
 
Best pratices para desenvolvimento mobile
Best pratices para desenvolvimento mobileBest pratices para desenvolvimento mobile
Best pratices para desenvolvimento mobile
 
Desenvolvimento Mobile
Desenvolvimento MobileDesenvolvimento Mobile
Desenvolvimento Mobile
 
Android: Uma nova maneira de pensar
Android: Uma nova maneira de pensarAndroid: Uma nova maneira de pensar
Android: Uma nova maneira de pensar
 
Aplicacoes responsivas
Aplicacoes responsivasAplicacoes responsivas
Aplicacoes responsivas
 
Treinamento Android Nooclix
Treinamento Android NooclixTreinamento Android Nooclix
Treinamento Android Nooclix
 
Introdução à media queries
Introdução à media queriesIntrodução à media queries
Introdução à media queries
 
Apresentacao jornada-unesp-2011
Apresentacao jornada-unesp-2011Apresentacao jornada-unesp-2011
Apresentacao jornada-unesp-2011
 
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
 

Mais de Jose Berardo

Mais de Jose Berardo (15)

Html5 Aula 6
Html5 Aula 6Html5 Aula 6
Html5 Aula 6
 
Html5 Aula 5
Html5 Aula 5Html5 Aula 5
Html5 Aula 5
 
Html5 Aula 4
Html5 Aula 4Html5 Aula 4
Html5 Aula 4
 
Oracle Certified Associate - Java Programmer I - aula 2
Oracle Certified Associate - Java Programmer I - aula 2Oracle Certified Associate - Java Programmer I - aula 2
Oracle Certified Associate - Java Programmer I - aula 2
 
Java Certified Associate Aula 1
Java Certified Associate Aula 1Java Certified Associate Aula 1
Java Certified Associate Aula 1
 
Curso de Android Aula 4
Curso de Android Aula 4Curso de Android Aula 4
Curso de Android Aula 4
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3
 
Curso de Android - aula 2
Curso de Android - aula 2Curso de Android - aula 2
Curso de Android - aula 2
 
Curso de Google Android - Aula 1
Curso de Google Android - Aula 1Curso de Google Android - Aula 1
Curso de Google Android - Aula 1
 
Curso de Java EE 6
Curso de Java EE 6Curso de Java EE 6
Curso de Java EE 6
 
Html5 aula 02
Html5 aula 02Html5 aula 02
Html5 aula 02
 
Html5 - O futuro da Web
Html5 - O futuro da WebHtml5 - O futuro da Web
Html5 - O futuro da Web
 
O que há de novo no PHP 5.3
O que há de novo no PHP 5.3O que há de novo no PHP 5.3
O que há de novo no PHP 5.3
 
Certificacao Php
Certificacao PhpCertificacao Php
Certificacao Php
 
Certificacoes Desenvolvedores
Certificacoes DesenvolvedoresCertificacoes Desenvolvedores
Certificacoes Desenvolvedores
 

Último

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Último (6)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

HTML5 Mobile Aula 1

  • 1.
  • 2. HTML5 MOBILE Front-end Web para Mobile Apps
  • 3. EMENTA • Imersão em mobile browsers • Mobile Displays • Touchscreen • Sensores • Frameworks e bibliotecas 3
  • 4. O QUE VEREMOS AGORA • Imersão em mobile browsers • Detecção de Mobile browsers e funcionalidades • Particularidades • Estratégias para aplicativos mobile • Simuladores Android, iOS e Blackberry • MobileDisplays • Touchscreen • Sensores • Frameworks e bibliotecas 4
  • 8. DETECÇÃO DE BROWSERS • window.navigator • Assinatura do browser capturada no Javascript • User-Agent • Cabeçalho HTTP que retém a assinatura do browsers • Ex (php): • <?php if(preg_match('Android|BlackBerry|PalmSource|iPhone|iPad' . 'Samsung|Nokia|MIDP|SymbianOS', $ _SERVER[‘HTTP_USER_AGENT’]) { echo "Mobile Browser na área"; } ?> • http://detectmobilebrowsers.com/ • http://www.useragentstring.com/pages/Mobile%20Browserlist/ 6
  • 9. TERA-WURFL • Wireless Universal Resource File • Banco de dados universal de todos os dispositivos móveis do planeta. • Projeto em PHP com base de dados MySQL, MSSQL ou MongoDB que deve ser instalado no seu servidor • Disponível também via Webservice • Base alimentada por usuários no mundo inteiro: • https://db.scientiamobile.com/ • Mais informações: • http://dbapi.scientiamobile.com 7
  • 10. MODERNIZR • Script de uso geral para detecção das capacidades do navegador • Cria dinamicamente classes na tag <html> para diversas funcionalidades presentes no navegador • class="js no-touch postmessage history multiplebgs boxshadow opacity cssanimations csscolumns cssgradients csstransforms csstransitions fontface localstorage sessionstorage svg inlinesvg no- blobbuilder blob bloburls download formdata wf-active" • Ajuda na hora de implementar seu css: • #meuDiv { background: url(‘img/sombra.png’); } • .boxshadow #meuDiv { background: none; box-shadow: 1px 2px 2px rgba(0, 0, 0, 0.20); } 8
  • 11. MODERNIZR • Script de uso geral para detecção das capacidades do navegador • Possui uma API javascript simples para detecção de funcionalidades • if (Modernizr.touch) { // código com touch } else { // código com click } 9
  • 12. PARTICULARIDADES MOBILE •O mundo mobile é: • Menor • Handsets (smartphones) foram feitos para caberem na palma da mão • Mais variado • Aspectos, densidades, orientações, métodos de input (dpad, trackball, touch, multitouch) • Mais difícil • Handsets são muitas vezes manuseados pelo polegar (um dedo meio estabanado) • Mesmo usando o indicador, a precisão não é a mesma de um mouse (e não há ponteiros passeando na tela) 10
  • 13. ESTRATÉGIAS • Site exclusivo para mobile devices • Cheque o UserAgent no servidor e redirecione para uma versão exclusivamente mobile do site • Prós: Maior simplicidade na construção da interface do projeto • Contras: Mais de um ponto de manutenção do sistema • Site adaptável (responsivo) • Utilize Media Queries • Cheque capacidades dinamicamente • Prós: Único projeto para todas as plataformas • Contras: Construção da interface muito mais complexa 11
  • 14. ESTRATÉGIAS • Mobile Web App • Aplicativos acessíveis a partir do próprio navegador • Prós: Não há a necessidade de instalação prévia • Contras: Perdem espaço com áreas do próprio navegador e não ficam presentes em home screen do usuário • Mobile Standalone App • Aplicativos acessíveis após instalação • Prós: Ficam como ícones em home screen, podem ser encontrados em lojas como Apple Store e Google Play e suprimem espaços mortos das barras do browser • Contras: Mais complexos. Normalmente, devem usar Cache API, Storage API e realizar checagem online/offline do navegador para sincronizações de dados 12
  • 15. SIMULANDO AMBIENTE • Apple iOS • iOS Simulator, disponível apenas para Mac e já vem no pacote de instalação do XCode • https://developer.apple.com/devcenter/ios/index.action • Google Android • Android Virtual Device (AVD) • http://developer.android.com/sdk/index.html • RIM BlackBerry • Máquina virtual VMWare simulando o S.O. do celular • http://us.blackberry.com/developers/resources/simulators.jsp 13
  • 18. O QUE VEREMOS AGORA • Imersão em mobile browsers • Mobile Displays • Resoluções, dimensões, densidades, aspect-ratios e zoom • Meta Viewport e cálculos de espaço • Touchscreen • Sensores • Frameworks e bibliotecas 16
  • 19. MOBILE DISPLAYS • Dimensões • Celulares evoluíram desde mecanismos grandes com telas pequenas para produtos finos e leves com amplas telas de altíssima resolução • No mundo mobile, menos sempre foi mais. Quanto menor (e mais leve) fosse o aparelho, mais portátil e atraente. Foi essa característica que tornou os celulares tão presentes e indispensáveis no mundo atual • Por outro lado, quanto maior e mais clara é a tela, mais versátil é o produto. Ou seja, é possível ler, jogar, assistir a vídeos e realizar atividades profissionais e cotidianas se o produto for pequeno o suficiente com tela grande o bastante • O iPhone se popularizou com a dimensão de tela 3.5”, mas outros smartphones vieram acima das 4” e os tablets podem ultrapassar 10” de tela. • A diversidade de dimensões e proporções dificulta a vida das webapps 17
  • 20. MOBILE DISPLAYS • Resoluções • A evolução dos desktops sempre foi pautada na capacidade de se obter maior resolução. • As telas foram cada vez cabendo mais conteúdo e em geral as coisas sempre foram suficientemente legíveis • Os primeiros monitores de S.O.s gráficos foram capazes de, em 14”, exibir 640x480 pixels • Com a evolução das placas de vídeo e a popularização dos monitores de 15” de telas planas, a resolução 800x600 pixels ditou os limites dos sites por anos • Monitores CRT de 17” foram em geral utilizando resoluções 1024x768 pixels • Em um aumento de pouco mais de 20% da tela, houve um aumento de mais de 60% de resolução e mesmo assim coisas ficaram ainda mais nítidas • O monitores LCD e LED conseguiram “acochar” ainda mais os pixels e resoluções ainda maiores vieram em telas de dimensões similares • O aspect-ratio padrão passou de 4:3 (padrão de TV) para 16:10 (widescreen) e alguns até 16:9 (cinema) e não variaram mais além disso 18
  • 21. O QUE É UM PÍXEL? • Pixels físicos • Pontos reais do dispositivo. Sua capacidade de exibir pontos de luz. • CSS Pixels • Pontos físicos que compõem uma tela máxima imaginária chamada de layout viewport • Device Pixels • Antigamente, o mesmo que pixels físicos • Os Androids passaram a informar pixels diferentes dos reais do aparelho a partir de padrões de densidade (DPI - Dots Per Inch) • Os iPhones seguiram a idéia com o conceito de Retina Display 19
  • 22. MOBILE DISPLAYS • Resoluções e aspect-ratio em aparelhos móveis • Celulares foram criados para ligar, mas aos poucos foram tomando a forma de outros produtos portáteis de nosso dia a dia • Isso fez gerar uma infinidade de tamanhos, resoluções e aspectos de telas • Nos dispositivos móveis, a busca por maiores resoluções sempre existiu, no entanto, esbarra-se no que é possível enxergar • Overview mode • Os browsers dos celulares nasceram navegando por páginas criadas para o mundo desktop, onde cabe mais coisas legivelmente • Usuários não costumas gostar de conteúdo com rolagem horizontal. Fica difícil ler se a cada linha temos que rolar a tela • A solução para browsers mobile foi aplicar zoom out para visão geral de todo o conteúdo de telas que não foram criadas pensando neles • Hoje, webapps focadas em dispositivos móveis são feitas para caberem nesses aparelhos sem a necessidade do zoom out padrão do navegador 20
  • 23. ZOOM • Browsers possuem a capacidade de condensar pixels em operações de zoom • Quando há um zoom out, os pixels CSS passam a ocupar um espaço menor do que os pixels do dispositivo (device pixels) • Quando há um zoom in, os pixels CSS vão consumir mais pixels do dispositivo para exibir o conteúdo • Dispositivospodem assim ser capazes de renderizar na área visível uma resolução maior do que a indicada em seus device pixels • http://www.quirksmode.org/blog/archives/2010/04/a_pixel_is_not.html • http://www.alistapart.com/articles/a-pixel-identity-crisis/ 21
  • 24. DENSIDADE • Maior resolução no mesmo espaço de tela significa maior densidade de pixels, medida em PPI (pixels per inch) • Para saber a densidade de uma tela faça os seguintes cálculos: • Eleve a largura da tela ao quadrado, faça o mesmo com a altura e some os resultados • Tire a raíz quadrada desta soma anterior e divida pela dimensão em polegadas da tela • Exemplo da tela padrão do Macbook Pro de 13”: • w = 1280, h = 800 • dp = Math.sqrt(1638400 + 640000) = 1509.4369811290567 • PPI = 1509.4369811290567 / 13” = 116.11 • http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density 22
  • 25. MEDIDAS DO IPHONE • Tela de 3.5” com resolução 320x480 pixels • Aspect-ratio de 1.5 (ou 2:3) vertical na área total e 1.1125 no viewport • Densidade de 165PPI • Já é acima do praticado em monitores desktop ou notebooks 23
  • 26. MAIS ESPAÇO NO IPHONE • Prática para se obter mais 60px de viewport no iPhone (retirando a barra de endereços) • Evitar zoom do usuário e escalar para o tamanho do dispositivo • <meta name="viewport" content="user-scalable=no, width=device- width, initial-scale=1 maximum-scale=1"/> • Ampliar o conteúdo para além da área visível sem a barra • body {min-height: 416px;} • Provocar um scroll para o primeiro pixel do conteúdo • window.scrollTo(0,1); • Todo scroll Javascript faz o Safari calcular se é interessante retirar a barra a fim de ganhar espaço. No Android, o Firefox e o Ópera já retiram a barra sem precisar desta prática. 24
  • 27. MAIS ESPAÇO NO IPHONE •OSafari permite salvar uma página como aplicativo standalone. Basta seguir os passos: • Solicitar fullscreen (retirar a barra de endereço e de botões) • <meta name="apple-mobile-web-app-capable" content="yes" /> • Mandar salvar a página como aplicativo • Adicionar à Home Screen • Após salvar, clique no ícone da app para abri-la em fullscreen • http://mobile.tutsplus.com/tutorials/ mobile-web-apps/remove-address-bar/ 25
  • 28. IOS WEBAPP •É possível detectar se a webapp está rodando em modo browser (como uma página) ou diretamente como aplicativo • Propriedade navigator.standalone (false se foi chamada pelo browser) • Pode ser uma boa prática verificar se a app não está standalone (está em modo browser) para sugerir que salve na Home Screen • if (!navigator.standalone) { alert(‘Adicione esta aplicação à sua Home Screen para chamá-la diretamente sem precisar do navegador’); } 26
  • 29. RETINA DISPLAY • Em 2010, o iPhone 4 aumentou a densidade de pixels de seu display de 165ppi para 330ppi • A Apple, por jogada de marketing, chamou isso de retina display, alegando que acima de 300ppi, o olho humano não consegue mais detectar os limites dos pixels, assim, com 330, ela colocou 30 pixels além da nossa capacidade de perceber • Isso dobrou a resolução do dispositivo, de 320x480px para impressionantes 640x960px em uma tela de apenas 3.5” • O lado negativo foi que todas as webapps vistas no novo iPhone passariam a ocupar apenas metade do espaço do viewport 27
  • 30. IPHONE PIXEL RATIO • window.devicePixelRatio • A fim de continuar exibindo as webapps do mesmo jeito, esta variável foi criada nos dispositivos móveis mais modernos • Ela aponta a razão de device pixels para CSS pixels • O iPhone 4, retina display, veio com um devicePixelRatio de 2. Ou seja, 1px no CSS (e no Javascript) ocupa 2px no dispositivo • Assim, screen.width e screen.height continuaram apresentando 320X480px e as webapps existentes não quebraram 28
  • 31. MEDIDAS DOS ANDROIDS • Variam bastante por aparelho • Desde 176 x 220 em celulares mais simples, passandos por 480 x 800 de alguns Androids, (ex.: Samsung Galaxy SII), chegando a 2560x1600 em tablets • Existem padrões de classificação de tamanhos e densidades (low, medium, high, extra high) 29
  • 32. ANDROID PIXEL RATIO • window.devicePixelRatio no Android • A linha top dos dispositivos Android está acima de 200ppi de densidade (hdpi e xhdpi). • Nos casos dos aparelhos com resolução 480x800px, o devicePixelRatio dos browsers costumam ser de 1.5, ou seja 3 device pixels para cada 2 css pixels • Linha Samsung Galaxy • O Galaxy Note possui resolução de 800x1280px (a mesma do Macbook Pro de 13”, em uma tela de 5.3”). Possui devicePixelRatio no Opera Mobile acima de 2 • O Galaxy SIII chegou a 306ppi e apresenta devicePixelRatio acima de 2 também. Curiosamente, abandonou o aspect-ratio de 16:10 em função do 16:9 em resolução de 1280x720px (padrão HD 720p) na sua tela de 4,8” 30
  • 33. DENSIDADE EM TABLETS • Tablets Android não costumam repetir a mesma densidade dos smartphones • Acer Iconia Pad, Motorola Xoom 2 e Galaxy Tab são mdpi, não chegando a 150ppi. O Amazon Kindle Fire é mais denso mas só atinge 170ppi • Asus Google Nexus 7 (Android Jelly Bean) • Lançado em Junho de 2012, alcançou a resolução de 1280x800px (aspecto 16:10) em uma tela de 7”. Densidade de 216ppi. • Ainda abaixo dos 264ppi do iPad 3. Este pode chegar a 2048x1536px, em sua tela de 9,7”. Aspect-ratio de 4:3 • Microsoft Surface • Sua versão Pro chega a 1920x1080px (padrão Full HD, aspecto 16:9) em tela de 10.6”, o que dá uma densidade de 208ppi 31
  • 34. META VIEWPORT • width/height • Dimensões em CSS pixels • Ex.: <meta name="viewport" content="width=320px"> • device-width/height • Dimensões em device pixels. Read only • initial-scale: • Nível de zoom inicial do viewport • Ex.: <meta name="viewport" content="initial-scale=1"> • user-scalable: • Booleano que indica se será possível ou não aplicar zoom • Ex.: <meta name="viewport" content="user-scalable=no"> • Ex. geral: <meta name="viewport" content="width=device-width,user-scalable=no, initial-scale=1"> 32
  • 35. CÁLCULOS DE ESPAÇO • Javascript • screen.width/height: Largura e altura da tela em device pixels • Alguns browsers subtraem o espaço da barra superior no Android • window.innerWidth/Height: Largura e altura da janela aberta • Medida de espaço da área da janela, em CSS pixels • muda quando se dá zoom, quanto menos zoom, mais espaço • element.client/offset/scrollWidth/Height: Espaço do elemento • Referências: • http://dev.opera.com/articles/view/an-introduction-to-meta-viewport-and- viewport/ • http://www.howtocreate.co.uk/tutorials/javascript/browserwindow 33