Multi platform development using titanium + alloy

34
Multi-platform mobile development with Titanium + Alloy

description

Learn how Titanium works and how to use Alloy and platform-specific directives to properly target multiple devices from a single source code.

Transcript of Multi platform development using titanium + alloy

Page 1: Multi platform development using titanium + alloy

Multi-platformmobile

developmentwith Titanium +

Alloy

Page 2: Multi platform development using titanium + alloy

About me

Have been using Titanium since late 2009Former Titanium trainer in the Caribbean and Latin AmericaObsessed with cross-platform mobile develomentLove Javascript hacking and technology startupsI'm a hacker in constant training

Page 3: Multi platform development using titanium + alloy

About Appcelerator andTitanium

JavaScript SDK to develop native, cross-platform mobile apps500,000+ developers worldwideTitanium is free and Open SourceSupports iOS, Android, Blackberry 10, Tizen and Windows in theworksThe Appcelerator Platform is the enterprise-grade suite of productsbased on Titanium

Page 4: Multi platform development using titanium + alloy

What do I mean by cross-platform?

To understand the power of Titanium, wefirst need to understand the problem

Titanium solves

Page 5: Multi platform development using titanium + alloy

Is a Web-app cross-platform?Let's use Facebook® as example

Page 6: Multi platform development using titanium + alloy

Is a Web-app cross-platform?

A web-app is cross-platform only if wedefine a cross-platform app as an app that

can run on multiple platforms

Page 7: Multi platform development using titanium + alloy

Cross-platform is much morethan running on different

platforms

All platforms have their own set ofNATIVE UI elements and UX patterns

Page 8: Multi platform development using titanium + alloy

Building native mobile appsthe traditional way is not trivial

Page 9: Multi platform development using titanium + alloy

Objective-C (iOS)

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];[myButton setTitle:@"Click Me!" forState:UIControlStateNormal];

Page 10: Multi platform development using titanium + alloy

Java (Android)

Button myButton = new Button(this);myButton.setText("Click Me!");

Page 11: Multi platform development using titanium + alloy

Titanium solves this problemby offering a JavaScript SDKthat normalizes the underlying

SDKs

Page 12: Multi platform development using titanium + alloy

Titanium/JavaScript (iOS,Android)

var myButton=Ti.UI.createButton({ title:'Click Me!'})

Page 13: Multi platform development using titanium + alloy

Alloy is Titanium's MVCframework that uses XML, TSS

(like CSS) and JavaScript

Page 14: Multi platform development using titanium + alloy

Titanium/Alloy (iOS, Android)

<Alloy> <Button>Click Me!</Button></Alloy>

Page 15: Multi platform development using titanium + alloy

Alloy App Folder Structure

Page 16: Multi platform development using titanium + alloy

Sample Two-tab App

Page 17: Multi platform development using titanium + alloy

UI DEFINITION: INDEX.XML<alloy> <tabgroup id="win"> <tab title="Tab 1" icon="KS_nav_ui.png"> <window title="Tab 1"> <label class="mylabel">I am Window 1</label> </window> </tab> <tab title="Tab 2" icon="KS_nav_views.png"> <window title="Tab 2"> <label class="mylabel">I am Window 2</label> </window> </tab> </tabgroup></alloy>

Page 18: Multi platform development using titanium + alloy

UI STYLING: INDEX.TSS"Window": { backgroundColor: "#fff"},"Label": { width: Ti.UI.SIZE, height: Ti.UI.SIZE, color: "#000", font: { fontSize: 20, fontFamily: 'Helvetica Neue' }, textAlign: 'center'},"#win":{ top: 0, left: 0},".mylabel":{ color: "#000"}

Page 19: Multi platform development using titanium + alloy

Running on iOS 6

Page 20: Multi platform development using titanium + alloy

Running on iOS 7

Page 21: Multi platform development using titanium + alloy

Running on Android 2.x

Page 22: Multi platform development using titanium + alloy

Running on Android ICS - HoloDark

Page 23: Multi platform development using titanium + alloy

Running on Android ICS - HoloLight

Page 24: Multi platform development using titanium + alloy

Dealing with native UIelements from the same code-

base

Page 25: Multi platform development using titanium + alloy

Simple single-window app

Page 26: Multi platform development using titanium + alloy

INDEX.XML

Page 27: Multi platform development using titanium + alloy

INDEX.TSS

Page 28: Multi platform development using titanium + alloy

INDEX.JS

Page 29: Multi platform development using titanium + alloy

The vocabulary is welldocumented

http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.Window

Page 30: Multi platform development using titanium + alloy

View the Source

https://github.com/appcelerator/KitchenSink/tree/master/Resources

Page 31: Multi platform development using titanium + alloy

Built into Alloy

BackboneData-bindingSynchronization adaptersUnderscore.jsMoment.jsWidgetsThemes

Page 32: Multi platform development using titanium + alloy

More cool stuff fromAppcelerator

ACS - Appcelerator Cloud ServicesNode.ACSCommand-line interface (CLI)

Page 33: Multi platform development using titanium + alloy

Get started today!

Runs on Mac, Windows and LinuxiOS development requires a Mac

Requires installation and configuration of all native tools (Xcode,Android SDK manager, etc)Download Titanium Studio from my.appcelerator.comStart hacking!

Page 34: Multi platform development using titanium + alloy

Thank you!

Questions?Follow me on

Twitter: @ricardoalcocer

Github: /ricardoalcocer