SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
H1 Porting

             Workshop




      1
             October 8, 2009


Donnerstag, 15. Oktober 2009
Port my widget




                               you
                                  rw
                                     idg
                                        et




        2




Donnerstag, 15. Oktober 2009
Introduction

          • Who?
          • Stephane Boulanger

          • Stefan Kolb
                                 • What?
                                 • tips & tricks

                                 • help you port
                                 • get feedback


      3




Donnerstag, 15. Oktober 2009
Building cross platform widgets



      • is an effort!
      • W3C Widgets are standardized, yes
        but you are first movers!
      • learning about mobile

      • learn about the use cases
      • think cross platform

      • abstract and use frameworks/toolkits




Donnerstag, 15. Oktober 2009
Use cases




Donnerstag, 15. Oktober 2009
Mobile gotchas




     • bad tool support
     • (almost) no debugging tools

     • long turn around times
     • platform specialties




Donnerstag, 15. Oktober 2009
Mobile gotchas - best practices

     • test on desktop




Donnerstag, 15. Oktober 2009
Mobile gotchas - best practices

     • test on desktop
     • test on desktop - Opera

     • test on desktop - better tool support
     • try-catch a lot!

     • Don‘t be afraid of alert / widget.showNotification
     • Opera Dragonfly

     • simplify your CSS




Donnerstag, 15. Oktober 2009
Try-catch


                      function catchy(fn){
                        return function(){
                          try{
                            fn.apply(fn, arguments);
                          }catch(e){
                            var err = [];
                            for (var key in e){
                               if (!key || typeof key=="function")
                                 continue;
                              err.push(key + ": " + e[key]);
                            }
                            alert(err.join("n");
                          }
                        }
                      }




Donnerstag, 15. Oktober 2009
Try-catch


                      function catchy(fn){
                        return function(){
                          try{
                            fn.apply(fn, arguments);
                          }catch(e){
                            var err = [];
                            for (var key in e){
                               if (!key || typeof key=="function")
                                 continue;
                              err.push(key + ": " + e[key]);
                            }
                            alert(err.join("n");
                          }
                        }
                      }




Donnerstag, 15. Oktober 2009
Try catch (2)




   doSomething();

   node.addEventListener("click", function(){...}, false);




   catchy(doSomething());

   node.addEventListener("click", catchy(function(){...}), false);




Donnerstag, 15. Oktober 2009
Cross platform - problems




                       Resizing   Scaling

Donnerstag, 15. Oktober 2009
• config.xml defines height+width
                               • different screen sizes

                               • modes (docked, extended)
                               • adapt to actual screen size

   Resizing




Donnerstag, 15. Oktober 2009
Resizing (1)



                               var h = screen.availHeight;
                               var w = screen.availWidth;
                               window.resizeTo(h, w)




Donnerstag, 15. Oktober 2009
Resizing (2)
                               <widget>
                               !     <width>1000</width>
                               !     <height>1200</height>
                               </widget>


                               body, html {
                                 width: 100%;
                                 height: 100%;
                               }


          • let the device do the scaling
          • resize on the desktop



Donnerstag, 15. Oktober 2009
Resizing
                               1. window.resizeTo()
                               2. auto-scale




Donnerstag, 15. Oktober 2009
0.7mm - 1cm




                               • fingers hardly scale
                               • make your widget scale

                               • don't use pixels!
                               • use relative sizes
                                                              Scaling


Donnerstag, 15. Oktober 2009
Scaling (1)
                    h1 {
                      font-size: 16px;
                      font-size: 1.5cm;
                    }

                    h2 {
                      font-size: 1.2cm;
                    }

                    button, .touchable {
                      font-size: 1cm;
                    }




Donnerstag, 15. Oktober 2009
understand




                               PPI
                               DPI          Scaling


Donnerstag, 15. Oktober 2009
166dpi - Nokia E52-1




         232dpi
         Nokia 5800 XpressMusic



                               265dpi - Samsung H1

                                                     Scaling


Donnerstag, 15. Oktober 2009
Scaling (2)
      body, html {
        font-size: 16px;
      }

       @media all and (min-resolution: 150dpi) {
         body, html {
           font-size: 20px;
         }
       }
       @media all and (min-resolution: 200dpi) {
         body, html {
           font-size: 25px;
         }
       }



Donnerstag, 15. Oktober 2009
@media all and (min-resolution: 250dpi) {
        body, html {
          font-size: 30px;
        }
      }

      h1 {
        font-size: 1.5em;
      }

      h2 {
        font-size: 1.3em;
      }




Donnerstag, 15. Oktober 2009
Scaling

       1. cm, mm, inch, ...
       2. media queries + em, %




Donnerstag, 15. Oktober 2009
Putting it all together

                                fontsize in mm


                                      line in pixel


                                 padding in em




                                    touchable height in mm




        SVG             25%




Donnerstag, 15. Oktober 2009
Porting your Widget to H1 - Steps to take




Donnerstag, 15. Oktober 2009
Thanks!



      Any Questions?




Donnerstag, 15. Oktober 2009

Contenu connexe

Similaire à Porting Workshop Tips Tricks Mobile Gotchas

Digital Imaging with Free Software - Talk at Sheffield Astronomical Society J...
Digital Imaging with Free Software - Talk at Sheffield Astronomical Society J...Digital Imaging with Free Software - Talk at Sheffield Astronomical Society J...
Digital Imaging with Free Software - Talk at Sheffield Astronomical Society J...Jan Wedekind
 
Rails For Kids 2009
Rails For Kids 2009Rails For Kids 2009
Rails For Kids 2009Fabio Akita
 
Twisted presentation & Jamendo usecases
Twisted presentation & Jamendo usecasesTwisted presentation & Jamendo usecases
Twisted presentation & Jamendo usecasesSylvain Zimmer
 
Latinoware Rails 2009
Latinoware Rails 2009Latinoware Rails 2009
Latinoware Rails 2009Fabio Akita
 
Functional Java Script - Webtechcon 2009
Functional Java Script - Webtechcon 2009Functional Java Script - Webtechcon 2009
Functional Java Script - Webtechcon 2009wolframkriesing
 
Semcomp de São Carlos
Semcomp de São CarlosSemcomp de São Carlos
Semcomp de São CarlosFabio Akita
 
DjangoCon 2009 Keynote
DjangoCon 2009 KeynoteDjangoCon 2009 Keynote
DjangoCon 2009 KeynoteTed Leung
 
Telco: Voice-Command Personal Agent Service with AWS Cloud (MBL202) | AWS re:...
Telco: Voice-Command Personal Agent Service with AWS Cloud (MBL202) | AWS re:...Telco: Voice-Command Personal Agent Service with AWS Cloud (MBL202) | AWS re:...
Telco: Voice-Command Personal Agent Service with AWS Cloud (MBL202) | AWS re:...Amazon Web Services
 
Making Design By Committee Work
Making Design By Committee WorkMaking Design By Committee Work
Making Design By Committee WorkMushon Zer-Aviv
 

Similaire à Porting Workshop Tips Tricks Mobile Gotchas (11)

Digital Imaging with Free Software - Talk at Sheffield Astronomical Society J...
Digital Imaging with Free Software - Talk at Sheffield Astronomical Society J...Digital Imaging with Free Software - Talk at Sheffield Astronomical Society J...
Digital Imaging with Free Software - Talk at Sheffield Astronomical Society J...
 
Rails For Kids 2009
Rails For Kids 2009Rails For Kids 2009
Rails For Kids 2009
 
Twisted presentation & Jamendo usecases
Twisted presentation & Jamendo usecasesTwisted presentation & Jamendo usecases
Twisted presentation & Jamendo usecases
 
Latinoware Rails 2009
Latinoware Rails 2009Latinoware Rails 2009
Latinoware Rails 2009
 
Functional Java Script - Webtechcon 2009
Functional Java Script - Webtechcon 2009Functional Java Script - Webtechcon 2009
Functional Java Script - Webtechcon 2009
 
Semcomp de São Carlos
Semcomp de São CarlosSemcomp de São Carlos
Semcomp de São Carlos
 
DjangoCon 2009 Keynote
DjangoCon 2009 KeynoteDjangoCon 2009 Keynote
DjangoCon 2009 Keynote
 
Cloudera Desktop
Cloudera DesktopCloudera Desktop
Cloudera Desktop
 
Claretiano 2009
Claretiano 2009Claretiano 2009
Claretiano 2009
 
Telco: Voice-Command Personal Agent Service with AWS Cloud (MBL202) | AWS re:...
Telco: Voice-Command Personal Agent Service with AWS Cloud (MBL202) | AWS re:...Telco: Voice-Command Personal Agent Service with AWS Cloud (MBL202) | AWS re:...
Telco: Voice-Command Personal Agent Service with AWS Cloud (MBL202) | AWS re:...
 
Making Design By Committee Work
Making Design By Committee WorkMaking Design By Committee Work
Making Design By Committee Work
 

Plus de Vodafone developer

Vodafone developer program mo mob 24aug2013
Vodafone developer program mo mob 24aug2013Vodafone developer program mo mob 24aug2013
Vodafone developer program mo mob 24aug2013Vodafone developer
 
Vodafone application upload guidelines v1
Vodafone application upload guidelines v1Vodafone application upload guidelines v1
Vodafone application upload guidelines v1Vodafone developer
 
Vodafone AppSelect Metadata Guidelines
Vodafone AppSelect Metadata GuidelinesVodafone AppSelect Metadata Guidelines
Vodafone AppSelect Metadata GuidelinesVodafone developer
 
Vodafone AppSelect Image Style Guide
Vodafone AppSelect Image Style GuideVodafone AppSelect Image Style Guide
Vodafone AppSelect Image Style GuideVodafone developer
 
Designing for privacy in mobile applications
Designing for privacy in mobile applicationsDesigning for privacy in mobile applications
Designing for privacy in mobile applicationsVodafone developer
 
What can vodafone developer do for you(mobile unconferencedusseldorf)
What can vodafone developer do for you(mobile unconferencedusseldorf)What can vodafone developer do for you(mobile unconferencedusseldorf)
What can vodafone developer do for you(mobile unconferencedusseldorf)Vodafone developer
 
Development and distribution of applications in partnership with mts(russia)
Development and distribution of applications in partnership with mts(russia)Development and distribution of applications in partnership with mts(russia)
Development and distribution of applications in partnership with mts(russia)Vodafone developer
 
Vodafone developer - how can i sell my android app
Vodafone developer - how can i sell my android appVodafone developer - how can i sell my android app
Vodafone developer - how can i sell my android appVodafone developer
 
Vodafone developer how can i sell my android app
Vodafone developer   how can i sell my android appVodafone developer   how can i sell my android app
Vodafone developer how can i sell my android appVodafone developer
 
What can vodafone developer do for you(greece devday)
What can vodafone developer do for you(greece devday)What can vodafone developer do for you(greece devday)
What can vodafone developer do for you(greece devday)Vodafone developer
 
What do mobile network operators know about open source web apps
What do mobile network operators know about open source web appsWhat do mobile network operators know about open source web apps
What do mobile network operators know about open source web appsVodafone developer
 
How vodafone developer is using web technology
How vodafone developer is using web technologyHow vodafone developer is using web technology
How vodafone developer is using web technologyVodafone developer
 
Designing a High Quality User Experience for Widgets
Designing a High Quality User Experience for WidgetsDesigning a High Quality User Experience for Widgets
Designing a High Quality User Experience for WidgetsVodafone developer
 
Porting experience - by Golden Gekko
Porting experience - by Golden GekkoPorting experience - by Golden Gekko
Porting experience - by Golden GekkoVodafone developer
 
Cross platform development - by Uxebu
Cross platform development - by UxebuCross platform development - by Uxebu
Cross platform development - by UxebuVodafone developer
 
Discover the opportunities of developing Apps for Vodafone 360
Discover the opportunities of developing Apps for Vodafone 360Discover the opportunities of developing Apps for Vodafone 360
Discover the opportunities of developing Apps for Vodafone 360Vodafone developer
 

Plus de Vodafone developer (20)

Vodafone developer program mo mob 24aug2013
Vodafone developer program mo mob 24aug2013Vodafone developer program mo mob 24aug2013
Vodafone developer program mo mob 24aug2013
 
Vodafone developerlab
Vodafone developerlabVodafone developerlab
Vodafone developerlab
 
Vodafone application upload guidelines v1
Vodafone application upload guidelines v1Vodafone application upload guidelines v1
Vodafone application upload guidelines v1
 
Vodafone AppSelect Metadata Guidelines
Vodafone AppSelect Metadata GuidelinesVodafone AppSelect Metadata Guidelines
Vodafone AppSelect Metadata Guidelines
 
Vodafone AppSelect Image Style Guide
Vodafone AppSelect Image Style GuideVodafone AppSelect Image Style Guide
Vodafone AppSelect Image Style Guide
 
Designing for privacy in mobile applications
Designing for privacy in mobile applicationsDesigning for privacy in mobile applications
Designing for privacy in mobile applications
 
What can vodafone developer do for you(mobile unconferencedusseldorf)
What can vodafone developer do for you(mobile unconferencedusseldorf)What can vodafone developer do for you(mobile unconferencedusseldorf)
What can vodafone developer do for you(mobile unconferencedusseldorf)
 
Development and distribution of applications in partnership with mts(russia)
Development and distribution of applications in partnership with mts(russia)Development and distribution of applications in partnership with mts(russia)
Development and distribution of applications in partnership with mts(russia)
 
Vodafone developer - how can i sell my android app
Vodafone developer - how can i sell my android appVodafone developer - how can i sell my android app
Vodafone developer - how can i sell my android app
 
Vodafone developer how can i sell my android app
Vodafone developer   how can i sell my android appVodafone developer   how can i sell my android app
Vodafone developer how can i sell my android app
 
What can vodafone developer do for you(greece devday)
What can vodafone developer do for you(greece devday)What can vodafone developer do for you(greece devday)
What can vodafone developer do for you(greece devday)
 
Fowa html5 apps
Fowa html5 appsFowa html5 apps
Fowa html5 apps
 
What do mobile network operators know about open source web apps
What do mobile network operators know about open source web appsWhat do mobile network operators know about open source web apps
What do mobile network operators know about open source web apps
 
How vodafone developer is using web technology
How vodafone developer is using web technologyHow vodafone developer is using web technology
How vodafone developer is using web technology
 
VF 360 Shop Image Style Guide
VF 360 Shop Image Style GuideVF 360 Shop Image Style Guide
VF 360 Shop Image Style Guide
 
Publishing your apps
Publishing your appsPublishing your apps
Publishing your apps
 
Designing a High Quality User Experience for Widgets
Designing a High Quality User Experience for WidgetsDesigning a High Quality User Experience for Widgets
Designing a High Quality User Experience for Widgets
 
Porting experience - by Golden Gekko
Porting experience - by Golden GekkoPorting experience - by Golden Gekko
Porting experience - by Golden Gekko
 
Cross platform development - by Uxebu
Cross platform development - by UxebuCross platform development - by Uxebu
Cross platform development - by Uxebu
 
Discover the opportunities of developing Apps for Vodafone 360
Discover the opportunities of developing Apps for Vodafone 360Discover the opportunities of developing Apps for Vodafone 360
Discover the opportunities of developing Apps for Vodafone 360
 

Porting Workshop Tips Tricks Mobile Gotchas

  • 1. H1 Porting Workshop 1 October 8, 2009 Donnerstag, 15. Oktober 2009
  • 2. Port my widget you rw idg et 2 Donnerstag, 15. Oktober 2009
  • 3. Introduction • Who? • Stephane Boulanger • Stefan Kolb • What? • tips & tricks • help you port • get feedback 3 Donnerstag, 15. Oktober 2009
  • 4. Building cross platform widgets • is an effort! • W3C Widgets are standardized, yes but you are first movers! • learning about mobile • learn about the use cases • think cross platform • abstract and use frameworks/toolkits Donnerstag, 15. Oktober 2009
  • 6. Mobile gotchas • bad tool support • (almost) no debugging tools • long turn around times • platform specialties Donnerstag, 15. Oktober 2009
  • 7. Mobile gotchas - best practices • test on desktop Donnerstag, 15. Oktober 2009
  • 8. Mobile gotchas - best practices • test on desktop • test on desktop - Opera • test on desktop - better tool support • try-catch a lot! • Don‘t be afraid of alert / widget.showNotification • Opera Dragonfly • simplify your CSS Donnerstag, 15. Oktober 2009
  • 9. Try-catch function catchy(fn){ return function(){ try{ fn.apply(fn, arguments); }catch(e){ var err = []; for (var key in e){ if (!key || typeof key=="function") continue; err.push(key + ": " + e[key]); } alert(err.join("n"); } } } Donnerstag, 15. Oktober 2009
  • 10. Try-catch function catchy(fn){ return function(){ try{ fn.apply(fn, arguments); }catch(e){ var err = []; for (var key in e){ if (!key || typeof key=="function") continue; err.push(key + ": " + e[key]); } alert(err.join("n"); } } } Donnerstag, 15. Oktober 2009
  • 11. Try catch (2) doSomething(); node.addEventListener("click", function(){...}, false); catchy(doSomething()); node.addEventListener("click", catchy(function(){...}), false); Donnerstag, 15. Oktober 2009
  • 12. Cross platform - problems Resizing Scaling Donnerstag, 15. Oktober 2009
  • 13. • config.xml defines height+width • different screen sizes • modes (docked, extended) • adapt to actual screen size Resizing Donnerstag, 15. Oktober 2009
  • 14. Resizing (1) var h = screen.availHeight; var w = screen.availWidth; window.resizeTo(h, w) Donnerstag, 15. Oktober 2009
  • 15. Resizing (2) <widget> ! <width>1000</width> ! <height>1200</height> </widget> body, html { width: 100%; height: 100%; } • let the device do the scaling • resize on the desktop Donnerstag, 15. Oktober 2009
  • 16. Resizing 1. window.resizeTo() 2. auto-scale Donnerstag, 15. Oktober 2009
  • 17. 0.7mm - 1cm • fingers hardly scale • make your widget scale • don't use pixels! • use relative sizes Scaling Donnerstag, 15. Oktober 2009
  • 18. Scaling (1) h1 { font-size: 16px; font-size: 1.5cm; } h2 { font-size: 1.2cm; } button, .touchable { font-size: 1cm; } Donnerstag, 15. Oktober 2009
  • 19. understand PPI DPI Scaling Donnerstag, 15. Oktober 2009
  • 20. 166dpi - Nokia E52-1 232dpi Nokia 5800 XpressMusic 265dpi - Samsung H1 Scaling Donnerstag, 15. Oktober 2009
  • 21. Scaling (2) body, html { font-size: 16px; } @media all and (min-resolution: 150dpi) { body, html { font-size: 20px; } } @media all and (min-resolution: 200dpi) { body, html { font-size: 25px; } } Donnerstag, 15. Oktober 2009
  • 22. @media all and (min-resolution: 250dpi) { body, html { font-size: 30px; } } h1 { font-size: 1.5em; } h2 { font-size: 1.3em; } Donnerstag, 15. Oktober 2009
  • 23. Scaling 1. cm, mm, inch, ... 2. media queries + em, % Donnerstag, 15. Oktober 2009
  • 24. Putting it all together fontsize in mm line in pixel padding in em touchable height in mm SVG 25% Donnerstag, 15. Oktober 2009
  • 25. Porting your Widget to H1 - Steps to take Donnerstag, 15. Oktober 2009
  • 26. Thanks! Any Questions? Donnerstag, 15. Oktober 2009