workshop fo wa

22
Mobile Widgets 1 v0.1 22 September 2009 Mobile Widgets Presented by Jochen Cichon @dh1jc 30 September 2009

Upload: joschi-

Post on 28-Jan-2015

113 views

Category:

Technology


1 download

DESCRIPTION

#fowa09 workshop session on Mobile Widgets

TRANSCRIPT

Page 1: Workshop Fo Wa

Mobile Widgets1v0.122 September 2009

Mobile Widgets

Presented by Jochen Cichon @dh1jc

30 September 2009

Page 2: Workshop Fo Wa

Mobile Widgets2v0.122 September 2009

Contents

1. Mobile Applications

2. Features

3. View Modes

4. Resize

5. Layout

6. Failsafe

Page 3: Workshop Fo Wa

Mobile Widgets3v0.122 September 2009

Mobile Applications 1/3

Classic Mobile Applications

• Programming Language C++; Java; C#

• Pro– Performance– Device Api's– Security Model

• Con– Low (No) portability– High learning curve– Layout (complicated)

Page 4: Workshop Fo Wa

Mobile Widgets4v0.122 September 2009

Mobile Applications 2/3

Browser “Applications”

• Programming Language Javascript; HTML; SVG; WML

• Pro– Web technology– Low learning curve– Device API's– Easy to Layout

• Con– No device API's– Performance– No offline content– Security Model (Server side)– Connection / latency

Page 5: Workshop Fo Wa

Mobile Widgets5v0.122 September 2009

Mobile Applications 3/3

Mobile Widgets

• Programming Language Javascript; HTML; SVG; ZIP

• Pro– Web technology– Low learning curve– Portable– Easy to Layout– Offine content store– One Package

• Con– No device API's (yet)– Performance (yet)– Security Model (yet)

Page 6: Workshop Fo Wa

Mobile Widgets6v0.122 September 2009

Features

• One Package for installation

• Multiple instances of a widget

• Different view modes e.g. active icon

• Web Technologies– HTML; CSS2/3; Javascript; Media Queries– SVG; Canvas; image formats (png, jpg, gif)– XSLT; DOM3

• Cross domain xmlHttpRequests

• Content store (content / credentials...)

• Cross Platform (Linux, Windows, Mac, S60 mobiles, LiMo, ...)

Page 7: Workshop Fo Wa

Mobile Widgets7v0.122 September 2009

View Modes

• Icon (not a real mode)

• Active Icon / Docked mode

• Extended / Floating mode

• Widget mode

• Application mode

W3C not yet final with mode specicificationhttp://dev.w3.org/2006/waf/widgets-wm/Overview.src.html

Page 8: Workshop Fo Wa

Mobile Widgets8v0.122 September 2009

View Modes in Detail 1/3

Example Icon vs. Active Icon (Docked)

• Limited size

• Content updateable

• No interactionIcon Mode Docked Mode

Page 9: Workshop Fo Wa

Mobile Widgets9v0.122 September 2009

View Modes in Detail 2/3

Example Active Icon vs. Extended / Floating Mode

• Greater size than icon / docked mode

• Content updateable

• No interactionFloating ModeDocked Mode

Page 10: Workshop Fo Wa

Mobile Widgets10v0.122 September 2009

View Modes in Detail 3/3

Example Application / Widget Mode

• Chrome / Non-Chrome

• Default actions (minimize, close) / self made actions

Widget ModeApplication Mode

Page 11: Workshop Fo Wa

Mobile Widgets11v0.122 September 2009

View Modes Coding 1/3

JS Code example

function myMode() { if (widget.widgetMode === “docked”) { … // e.g. set update interval to different value }}// Register the EventListenerwidget.addEventListener(“widgetmodechange”, myMode, false);

Page 12: Workshop Fo Wa

Mobile Widgets12v0.122 September 2009

View Modes Coding 2/3

Media Queries

<div id=”dockedView”> … </div><div id=”widgetView”> … </div>

#dockedView { display: none; }@media all and (-o-widget-mode:docked) { #dockedView { display: block } #widgetView { display: none } }

Page 13: Workshop Fo Wa

Mobile Widgets13v0.122 September 2009

View Modes Coding 3/3

Media Queries

<img id=”closeButton” src=”img/close.png”/>

#closeButton{ display: none }@media all and (-o-widget-mode:widget) { #closeButton { display: block } }

Page 14: Workshop Fo Wa

Mobile Widgets14v0.122 September 2009

Resize

Why to resize?

• Different view modes

• Different screen sizes on mobiles (width/height)

• Portrait / Landscape (maybe in different modes)

Do the math yourself...

Page 15: Workshop Fo Wa

Mobile Widgets15v0.122 September 2009

Resize

JS Resize

function myResize () { if (widget.widgetMode !== “widget”) window.resizeTo(screen.availWidth, screen.availHeight);}

// register ResolutionChange Eventwidget.addEventListener(“resolution”, myResize, false);

// call initially myResize();

Page 16: Workshop Fo Wa

Mobile Widgets16v0.122 September 2009

Layout

Trouble in detail

• DPI Values– Screen reports 96dpi (which is mostly wrong!)– Handsets with same screen dimensions have different dpi values

• Nokia N96, 2.8inch display 240x320 = 142ppi• Nokia 5800 music, 3.2inch display 640x360 = 229 ppi

• Fonts may become unreadable

• Touch buttons are maybe too small / large

Page 17: Workshop Fo Wa

Mobile Widgets17v0.122 September 2009

Layout

Fonts

• Use media queries to set base font sizebody { font-size: 16px }@media all and (min-resolution: 200dpi) { body { font-size: 22px }}

• reference base font size

#header { font-size: 1.2em }div { font-size: .8em }

Page 18: Workshop Fo Wa

Mobile Widgets18v0.122 September 2009

Layout

Images

• You don't want to scale up– Even downscaling may look bad

• Use appropriate image format (jpg, png, gif, svg)

• Use SVG e.g. for Logo / Splash screen– If possible (svg restriction based on renderer)

• When you don't know your image

img { max-width: 95%;}

Page 19: Workshop Fo Wa

Mobile Widgets19v0.122 September 2009

Layout

UI-Elements

• UI-Elements are often made of images

• Suddenly 100px very small on high ppi-displays– Use absolute size e.g. “ 1cm “ for button on touch devices

#closeButton { width: 64px }@media all and (-o-touch) { #closeButton { width: 1cm } }• Adapt to different ppi with different images

Page 20: Workshop Fo Wa

Mobile Widgets20v0.122 September 2009

Layout

UI-Elements

• Use SVG and stay scalable– Remember to have a fallback pixel-image

<object type=”image/svg+xml” data=”busy.svg”> <img src=”fallback-busy.png”/></object>• Don't forget that an “onClick” is given to the underlying SVG!

Page 21: Workshop Fo Wa

Mobile Widgets21v0.122 September 2009

Failsafe

• Use try - catch blocks

try { ...} catch (err) { // React on error widget.showNotification (“Can't update content”);}• use timeout for XHR requests

Page 22: Workshop Fo Wa

Mobile Widgets22v0.122 September 2009

Thank you