How to get that native look & feel using bbUI.js and Alice.js WEB03 bbUI.js BlackBerry UI JavaScript framework 2 Framework Goals BlackBerry Look and Feel Common UI Inline with BlackBerry UX guidelines Screen Management Performance and Memory optimization Open and collaborative 3 Philosophy Scales with the platform Both capabilities and resolution/pixel density Dynamic based on capabilities Custom HTML “data-” attributes Control based layout Off-DOM manipulation Performance Memory Usage 4 Current State Now version 0.9.2 BETA Supports BlackBerry OS v.5, 6, 7, PlayBook and BlackBerry 10 BlackBerry OS 5 support needs a bit of work… Top level OSS project: http://www.github.com/blackberry/bbUI.js Still in the “incubating” phase 5 bbUI.js Time for a demo! 6 Configuration document Config.xml: <rim:navigation mode=“focus”/> <feature id=“blackberry.system.event” /> <feature id=“blackbery.app” /> If using dropdowns on BlackBerry 5/6/7: <feature id=“blackberry.ui.dialog” /> If using menus <feature id=“blackberry.ui.menu”/> <feature id=“blackberry.app.event”/> 7 Toolkit Initialization Mandatory initialization using bb.init(myoptions) Should be the first code you run on your main page myoptions = { onbackkey: null, onscreenready: null, ondomready: null, bb10ActionBarDark: false, bb10ControlsDark: false, bb10ForPlayBook: false, bb10AccentColor: '#2D566F', bb10HighlightColor: '#00A8DF‘ } // Custom handler for back key on BlackBerry 5/6/7 smartphones // Manipulate your screen before it's inserted into the DOM // Manipulate your screen after it's inserted into the DOM // If set to true, the action bar will use the dark theme // If set to true, the controls and screen will use the dark theme // If set to true, PlayBook will be considered a BB10 device // An accent color to be used for title bars and other areas // A highlight color to use when a user selects an item 8 Screens Each screen is an individual HTML fragment file data-bb-type=“screen” Transition effects Title bar Back button on PlayBook Appears as an action bar back button on BlackBerry 10 9 Screen Code <div data-bb-type="screen" data-bb-title="My Screen"> <div data-bb-type="title" data-bb-caption="Title bar caption" data-bb-back-caption="Back"> </div> <p> Hello World ! </p> </div> Screen Management App = Single page bbui-0.9.2.js/css files loaded once into this single page Screen = HTML fragment Screens loaded via AJAX Screen stack bb.pushscreen(…), bb.popscreen() bbUI.js traps HW “back” key to auto-close screens on BlackBerry5/6/7 bbUI.js automatically handles “back” if you specify a back button on PlayBook or BlackBerry 10 11 Screen Events onscreenready Assigned once, passed screen element Fires synchronously ondomready Assigned once, passed screen element Fires asynchronously 12 Screen Management Code <html> <head> <script type="text/javascript"> bb.init({ onscreenready : function(element, id) { console.log(id + ‘ ready’); } }); </script> </head> <body onload="bb.pushScreen('menu.htm’,'menu');"> </body> </html> 13 Styling & Scripting Screen specific CSS Inline OR linked (relative to app root) Dynamic resolution handling Fonts Images Screen specific JS Unload event fired if you need to do some clean-up 14 Code <div data-bb-type="screen”> <link rel="stylesheet" href="css/screen1.css"></link> <script id="screen1JS" src="js/tabs.js" onunload="unloadPushListeners()"> </script> </div> 15 BlackBerry 10 Grid Lists Current Image data layouts Items declared in groups and rows Optional group headers 16:9 format Images sized based on # items / row Next Allow “square” images Allow removal of titles 16 BlackBerry 10 Action Bar Current Buttons and tabs Actions are for everything viewed on the screen Built in “Back” button >5 actions create slide in action overflow menu Next Tab overflow menu 17 BlackBerry 10 Context Menu Current Press and hold context menu Actions to perform on a selection peek() or Show() Peek and then swipe gesture Get selected menu item Image list integration Next Integrate into Grid List 18 Image Lists Seen in: Options screens Inbox Contacts Image, Title, Description, Accent Text Auto scaled Headers onclick events for items 19 Image List <div data-bb-type="image-list"> <div data-bb-type="item” data-bb-img="icon1.png” data-bb-title="Input Controls"> Use native looking input controls </div> ... </div> 20 Buttons Can be used anywhere Buttons size to text Can stretch Onclick Enable/Disable 21 Buttons <div data-bb-type="label-control-horizontal-row"> <div data-bb-type="label">Font Style:</div> <div data-bb-type="button” onclick="alert('click');” id="plain"> Plain </div> </div> 22 Label/Control Container Used with rounded panel Supported formats: Left-justified label Right-justified button Stretched inputs Based on rows 23 Label/Control Container <div data-bb-type="round-panel"> <div data-bb-type="panel-header">Buttons</div> <div data-bb-type="label-control-container"> <div data-bb-type="row"> <div data-bb-type="label">Choose a city:</div> <div data-bb-type="button" onclick="openCityScreen()"> Brasilia </div> ... 24 Dropdowns <select> Can be used anywhere size to largest item Can stretch onchange setSelectedItem 25 Arrow Lists Variation on the Image list data-bb-type= “text-arrow-list” • Items are: data-bb-type=“item” 26 BBM Bubbles Great for BBMconnected WebWorks apps Bubbles contain item(s) Bubbles left/right justified Items: Image Text description 27 Future Goals: Stabilize BlackBerry 5 support Add more PlayBook elements More core controls for BlackBerry 10 More transition effects How can you help? Become a contributor! http://www.github.com/blackberry/bbUI.js 28 Alice.js A Lightweight Independent CSS Engine 29 Framework Goals Visual effects library Hardware accelerated for fast animations and transitions Adds randomization to effects so they never go stale One line of code Apply an effect to any HTML element Open and collaborative http://blackberry.github.com/Alice Apache 2 license 30 AliceJS Philosophy Simplicity One line of code for any effect CSS likeness Easy to one day perhaps integrate in the standard DOM-level animations Not just for image galleries Rich Collection of effects Organics effects are always mysteriously slightly different Alice.js Time for a demo! 32 Using Alice.js <html> <body> <img id="e1" src="images/logo.png" onClick="animate(‘e1’)"> <input id="e2" type="text" onClick="animate(‘e2’)" /> <script src="js/src/alice.core.js"></script> <script src="js/src/alice.plugins.cheshire.js"></script> <script> var a = alice.init(); function animate(id) { a.wobble([id], 10, "center", "1000ms", "ease-in-out"); } </script> </body> </html> 33 CSS Likeness JavaScript Code: a.wobble(["e1", "e2"], {value: 20, randomness: 80}, "center", {value: 1000, randomness: 20}, "ease-in-out"); Putting CSS glasses on, it could look like this: #MyDiv { animate-wobble: randomize(20deg, 80%) center randomize(1000ms, 20%) ease-in-out; } Or #MyDiv { animate-wobble-rotation: 5 80%; animate-wobble-anchor: center; animate-wobble-duration: 1000ms 20%; animate-wobble-timing-function: ease-in-out; } 15 OOTB Sub-Effects Bounce Dance Drain Fade Hinge PageFlip Pendulum PhantomZone RaceFlag Slide Spin Toss Twirl Wobble Zoom ... Use the builder tool to create your own effects http://blackberry.github.com/Alice/demos/builder.html 35 Flux Slider Hardware Accelerated Alternative http://www.joelambert.co.uk/flux/ 36 THANK YOU WEB03
© Copyright 2024