SlideShare a Scribd company logo
Develop your first mobile App
    for iOS and Android!
    Ricardo Alcocer // Platform Evangelist!
                   March 12, 2013!
         Silicon Valley Titanium User Group!
!
Format of this talk!
Our objective for today!


      !
BUILD AN APP!
Base assumptions!

•  You are not a “hardcore coder”!
•  You know how to build websites with
   HTML and CSS!
•  You have seen at least a little bit of
   Javascript!
About Appcelerator Titanium!

         •  Not a language, but a high-level
            Javascript SDK!
         •  Allows you build Native Apps for
            iOS (iPhone, iPod Touch, iPad),
            Android (Phone and Tablet),
            Mobile Web, Blackberry 10 (beta),
            soon for Windows 8 and Tizen!
         •  Free/Open Source!!
         •  It’s Native, NOT web app !
The design of your App is

                            SUPER important!



                 If the users don't like how
                      your App LOOKS !
                               !
                      they will delete it!!


h"p://www.itexico.com/blog/bid/91499/Why-­‐your-­‐Mobile-­‐App-­‐s-­‐UX-­‐UI-­‐must-­‐be-­‐Awesome	
  
h"p://blog.planetargon.com/entries/2010/3/1/designer-­‐vs-­‐developer	
  
Harmony between design and functionalities!
The MVC Pattern!
                                                                         JS	
  
                                               Model	
  


                           XML	
                                        JS	
  

       View	
               TSS	
         Controller	
  



User	
  Interface	
  Components	
     Invisible	
  to	
  the	
  end-­‐user	
  
Designers and developers can now get along!




h"p://images.elephantjournal.com/wp-­‐content/uploads/2012/01/dog-­‐and-­‐cat-­‐sleeping-­‐together.jpg	
  
Download Titanium Studio!
Make sure you download Studio!
Configure platform SDKs!




SDKs	
  allow	
  you	
  to	
  compile	
  with	
  the	
  naRve	
  tools	
  and	
  provide	
  you	
  with	
  Phone	
  Simulators	
  for	
  tesRng	
  
Success!!
Now you can follow the “Quick Start
          Guide”, or….!
…you can try to fly!




h"p://amazingjpg.blogspot.com/2012/11/reckless-­‐abandon-­‐photo-­‐by-­‐peter-­‐brannon.html	
  
Titanium is very powerful, so better get
                   your training wheels on!




h"p://www.justsaypictures.com/images/training-­‐wheels-­‐01.jpg	
  
Let’s build a “Jokes” App!
Let’s create a new project!
Select Titanium Project!
Select Alloy as your Titanium Project
                 Type!
Configure your project!


                Name	
  for	
  your	
  App   	
  



                In	
  reverse	
  URL	
  format:	
  ie.	
  (com.mycompany.myapp)        	
  	
  

                Select	
  target	
  plaYorms	
  for	
  this	
  project   	
  



                Are	
  you	
  using	
  Appcelerator	
  Cloud	
  Services?       	
  
Titanium Studio!
These	
  one	
  implement	
  funcRonaliRes	
  	
  
                and	
  interacRvity	
  


                We	
  won’t	
  look	
  at	
  these	
  


                These	
  two	
  work	
  together	
  to	
  build	
  UI	
  




Remember?	
  
Running an App!


             You’ll	
  only	
  see	
  the	
  target	
  
             plaYorms	
  you	
  explicitly	
  	
  
             configured	
  
             	
  
             iPhone	
  is	
  only	
  available	
  on	
  Mac	
  
             Android	
  is	
  available	
  on	
  Win,	
  
             Mac	
  and	
  Linux	
  
Default App running on iPhone Simulator!
Default index.xml!



<Alloy>	
  
	
  	
  	
  <Window	
  class="container">	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <Label	
  id="label"	
  onClick="doClick">Hello,	
  World</Label>	
  
	
  	
  	
  </Window>	
  
</Alloy>	
  
Objects in index.xml!



<Alloy>	
  
	
  	
  	
  <Window	
  class="container">	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <Label	
  id="label"	
  onClick="doClick">Hello,	
  World</Label>	
  
	
  	
  	
  </Window>	
  
</Alloy>	
  
index.xml + index.tss working together!

XML	
  
<Alloy>	
  
	
  	
  	
  <Window	
  class="container">	
  
	
  	
  	
  	
  	
  	
  <Label	
  id="label"	
  onClick="doClick">Hello,	
  World</Label>	
  
	
  	
  	
  </Window>	
  
</Alloy>	
  




TSS	
  
  ".container":	
  {	
  
  	
  	
  	
  backgroundColor:"white"	
  
  },	
  
  "Label":	
  {	
  
  	
  	
  	
  width:	
  Ti.UI.SIZE,	
  
  	
  	
  	
  height:	
  Ti.UI.SIZE,	
  
  	
  	
  	
  color:	
  "#000"	
  
  }	
  
!
Enough of the basics.
  Let’s get started!!
Back to our “Jokes” App!
Thinking as a Web developer!

                                     PAGE	
  



                                      DIV	
  

                 DIV	
                 DIV	
  


                                      DIV	
  
                                       DIV	
  
                 DIV	
  
                           DIV	
          DIV	
  
Thinking as a Web developer!

                           PAGE	
  



                            DIV	
  

                 DIV	
       DIV	
  




                           DIV	
  
Native iOS and Andoroid UI Elements!




h"p://www.teehanlax.com/blog/ios-­‐6-­‐gui-­‐psd-­‐iphone-­‐5/	
  




                                                                     h"p://www.teehanlax.com/blog/android-­‐2-­‐3-­‐4-­‐gui-­‐psd-­‐high-­‐density/	
  
Titanium allows you to use native
                         platform elements!




h"p://docs.appcelerator.com/Rtanium/3.0/#!/api	
  
The vocabulary is well documented!




  h"p://docs.appcelerator.com/Rtanium/3.0/#!/api/Titanium.UI.Window	
  
In Titanium Terms!

                                    Window	
  

                                                VIEW	
  

                       VIEW	
                   VIEW	
  


                       TableView	
  

                                     VIEW	
  

            VIEW	
  
                                      VIEW	
  
                         VIEW	
          VIEW	
  
In Titanium Terms!

                       WINDOW	
  



                        VIEW	
  

            VIEW	
       VIEW	
  




                        VIEW	
  
Building the App Structure (XML)!
                                                                                                      Expected	
  Result	
  
<Alloy>	
  
	
  	
  <Window	
  class="container">	
  
	
  	
  	
  	
  <View	
  id="header">	
  
	
  	
  	
  	
  	
  	
  <View	
  id="appicon"></View>	
  
	
  	
  	
  	
  	
  	
  <Label	
  id="apptitle">Funny	
  Stuff</Label>	
  
	
  	
  	
  	
  </View>	
  
	
  	
  	
  	
  <TableView	
  id="mainlist">	
  
	
  	
  	
  	
  	
  	
  <TableViewRow	
  id="listrow">	
  
	
  	
  	
  	
  	
  	
  	
  	
  <View	
  id="rowContainer">	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <View	
  id="rowIcon"></View>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <Label	
  id="rowTitle">Some	
  Title</Label>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <View	
  id="rowTypeContainer">	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <Label	
  id="rowTypeCaption">Type:</Label>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <Label	
  id="rowTypeData">Some	
  Type</Label>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  </View>	
  
	
  	
  	
  	
  	
  	
  	
  	
  </View>	
  
	
  	
  	
  	
  	
  	
  </TableViewRow>	
  
	
  	
  	
  	
  </TableView>	
  
	
  	
  </Window>	
  
</Alloy>	
  
Building the App Structure (XML)!
                                                                                                      Expected	
  Result	
  
<Alloy>	
  
	
  	
  <Window	
  class="container">	
  
	
  	
  	
  	
  <View	
  id="header">	
  
	
  	
  	
  	
  	
  	
  <View	
  id="appicon"></View>	
  
	
  	
  	
  	
  	
  	
  <Label	
  id="apptitle">Funny	
  Stuff</Label>	
  
	
  	
  	
  	
  </View>	
  
	
  	
  	
  	
  <TableView	
  id="mainlist">	
  
	
  	
  	
  	
  	
  	
  <TableViewRow	
  id="listrow">	
  
	
  	
  	
  	
  	
  	
  	
  	
  <View	
  id="rowContainer">	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <View	
  id="rowIcon"></View>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <Label	
  id="rowTitle">Some	
  Title</Label>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <View	
  id="rowTypeContainer">	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <Label	
  id="rowTypeCaption">Type:</Label>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <Label	
  id="rowTypeData">Some	
  Type</Label>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  </View>	
  
	
  	
  	
  	
  	
  	
  	
  	
  </View>	
  
	
  	
  	
  	
  	
  	
  </TableViewRow>	
  
	
  	
  	
  	
  </TableView>	
  
	
  	
  </Window>	
  
</Alloy>	
  
Hey! That’s not what I wanted!




We	
  need	
  to	
  apply	
  styling	
  to	
  the	
  elements.	
  	
  Let’s	
  start	
  with	
  container	
  and	
  header	
  
Styling the main “container” and
                         “header”!


".container":	
  {	
  
	
  	
  backgroundColor:"white",	
  
	
  	
  layout:	
  'vertical'	
  
},	
  
"#header":{	
  
	
  	
  height:	
  "50dp",	
  
	
  	
  backgroundColor:	
  "blue"	
  
}	
  




Next:	
  the	
  “appicon”	
  area	
  
Styling the “appicon”!



"#appicon":{	
  
	
  	
  width:	
  "50dp",	
  
	
  	
  height:	
  "50dp",	
  
	
  	
  left:	
  "0",	
  
	
  	
  backgroundColor:	
  "#fff"	
  
}	
  




Next:	
  let’s	
  specify	
  a	
  height	
  for	
  the	
  “rowContainer”	
  
The App so far!



     "#rowContainer":{	
  
           	
  height:	
  "60dp"	
  
     }	
  




Next:	
  the	
  “rowIcon”	
  area	
  
The App so far!



  "#rowIcon":{	
  
        	
  	
  lek:	
  “5dp”,	
  
        	
  	
  height:	
  "50dp",	
  
        	
  	
  width:	
  "50dp",	
  
        	
  	
  backgroundColor:	
  "red	
  "	
  
  }	
  


Next:	
  the	
  rest	
  of	
  the	
  elements	
  in	
  the	
  “rowContainer”	
  
The App so far!
 "#rowTitle":{	
  
 	
     	
  lek:	
  "60dp",	
  
        	
  	
  top:	
  "5dp",	
  
        	
  	
  width:	
  Ti.UI.SIZE,	
  
 },	
  
 "#rowTypeContainer":{	
  
        	
  	
  bo"om:	
  "5dp",	
  
        	
  	
  height:	
  "20dp",	
  
        	
  	
  width:	
  Ti.UI.SIZE,	
  
        	
  	
  layout:	
  "horizontal",	
  
        	
  	
  lek:	
  "60dp"	
  
 },	
  
 "#rowTypeCapRon":{	
  
        	
  	
  height:	
  Ti.UI.SIZE,	
  
        	
  	
  width:	
  Ti.UI.SIZE	
  
 },	
  
 "#rowTypeData":{	
  
        	
  	
  height:	
  Ti.UI.SIZE,	
  
        	
  	
  width:	
  Ti.UI.SIZE	
  
 }	
  


Next:	
  some	
  colors	
  on	
  the	
  row	
  elements	
  
The App so far!
"#rowTypeCapRon":{	
  
	
       	
  height:	
  Ti.UI.SIZE,	
  
	
       	
  width:	
  Ti.UI.SIZE,	
  
	
       	
  font:	
  {	
  
	
  	
   	
            	
  fontSize:	
  "12dp"	
  
         	
  	
  }	
  
},	
  
"#rowTypeData":{	
  
         	
  	
  height:	
  Ti.UI.SIZE,	
  
         	
  	
  width:	
  Ti.UI.SIZE,	
  
         	
  	
  font:	
  {	
  
	
  	
   	
            	
  fontSize:	
  "12dp"	
  
         	
  	
  }	
  
}	
  


Next:	
  some	
  colors	
  on	
  the	
  “header”	
  area	
  
The App so far!


 "#header":{	
  
 	
       	
  height:	
  "50dp",	
  
          	
  	
  backgroundColor:	
  "#4698D6"	
  
 },	
  
 "#appRtle":{	
  
 	
       	
  font:	
  {	
  
 	
  	
   	
             	
  fontSize:	
  "20dp",	
  
          	
             	
  fontWeight:	
  "bold"	
  
          	
  	
  },	
  
          	
  	
  color:	
  "#fff"	
  
 }	
  
 	
  


Next:	
  	
  more	
  styling	
  on	
  the	
  table	
  rows	
  
The App so far!


"#rowContainer":{	
  
	
    	
  height:	
  "60dp",	
  
      	
  top:	
  "5dp",	
  
	
    	
  right:	
  "5dp",	
  
	
    	
  bo"om:	
  "5dp",	
  
	
    	
  lek:	
  "5dp",	
  
	
    	
  borderWidth:	
  1,	
  
	
    	
  borderColor:	
  "#cacaca",	
  
	
    	
  borderRadius:	
  5	
  
}	
  
	
  



Next:	
  some	
  more	
  colors	
  on	
  the	
  table	
  row	
  	
  
The App so far!
 "#rowContainer":{	
  
 	
       	
  height:	
  "60dp",	
  
 	
       	
  top:	
  "5dp",	
  
          	
  right:	
  "5dp",	
  
 	
       	
  bo"om:	
  "5dp",	
  
 	
       	
  lek:	
  "5dp",	
  
 	
       	
  backgroundColor:	
  "#f9f9f9",	
  
 	
       	
  borderWidth:	
  1,	
  
 	
       	
  borderColor:	
  "#cacaca",	
  
 	
       	
  borderRadius:	
  5	
  
 },	
  
 "#rowTypeCapRon":{	
  
 	
       	
  height:	
  Ti.UI.SIZE,	
  
 	
       	
  width:	
  Ti.UI.SIZE,	
  
 	
       	
  font:	
  {	
  
 	
  	
   	
            	
  fontSize:	
  "12dp",	
  
 	
  	
   	
            	
  fontWeight:	
  "bold"	
  
 	
       	
  },	
  
 	
       	
  color:	
  "#B73B22"	
  
 }	
  
 	
  
Next:	
  the	
  icon	
  on	
  the	
  row	
  
The App so far!




   Images	
  live	
  inside	
  the	
  /assets	
  folder.	
  


 We’ll	
  make	
  this	
  change	
  on	
  the	
  XML,	
  so	
  we	
  can	
  
 assign	
  different	
  images	
  to	
  each	
  row:	
  

 <View	
  id="rowIcon"	
  backgroundImage="/happyface.png"></View>	
  




Next:	
  the	
  icon	
  on	
  the	
  “header”	
  
The App so far!



 "#appicon":{	
  
 	
    	
  width:	
  "50dp",	
  
 	
    	
  height:	
  "50dp",	
  
 	
    	
  lek:	
  "0",	
  
 	
    	
  backgroundImage:	
  "/topicon.png"	
  
 }	
  
 	
  




Finally:	
  some	
  real	
  data	
  on	
  the	
  table	
  row	
  
The App so far!
Go	
  to	
  your	
  index.xml	
  file	
  and	
  change	
  the	
  placeholder	
  data	
  

<TableViewRow	
  id="listrow">	
  
                         	
  <View	
  id="rowContainer">	
  
	
  	
  	
  	
   	
                           	
  <View	
  id="rowIcon"	
  backgroundImage="/happyface.png"></View>	
  
                         	
  	
  	
  	
  	
   	
  <Label	
  id="rowTitle">Why	
  did	
  the	
  turkey	
  cross	
  the	
  road?</Label>	
  
	
  	
  	
  	
   	
                           	
  <View	
  id="rowTypeContainer">	
  
	
  	
  	
  	
  	
  	
   	
                   	
       	
  <Label	
  id="rowTypeCapRon">Type:</Label>	
  
	
  	
  	
  	
  	
  	
   	
                   	
       	
  <Label	
  id="rowTypeData">Joke</Label>	
  
	
  	
  	
  	
   	
                           	
  </View>	
  
	
  	
                   	
  </View>	
  
</TableViewRow>	
  




   To	
  add	
  more	
  rows,	
  copy	
  and	
  paste	
  this	
  code	
  block!	
  
The finalized main screen!!
The App so far!
Use	
  the	
  same	
  procedure	
  to	
  create	
  the	
  template	
  for	
  
the	
  second	
  page.	
  	
  I’ll	
  leave	
  that	
  to	
  you	
  



TIPS:	
  	
  
	
  
1.  In	
  Studio,	
  right-­‐click	
  in	
  the	
  files	
  area,	
  select	
  New	
  >	
  
     Alloy	
  Controller	
  

2.  You	
  could	
  move	
  ALL	
  your	
  TSS	
  to	
  “app.tss”.	
  	
  This	
  is	
  
     a	
  global	
  file	
  that	
  holds	
  styling	
  that	
  will	
  be	
  shared	
  
     by	
  all	
  screens	
  
	
  
A little bit of code to link both files (1/4)!

The	
  index.xml	
  file	
  needs	
  to	
  know	
  what	
  to	
  do	
  when	
  you	
  click	
  on	
  the	
  rows	
  




     <TableView	
  id="mainlist"	
  onClick="onTableClick">	
  
         	
  <TableViewRow	
  id="listrow"	
  ezawin="turkeycrossing">	
  
         	
      	
  	
  


                                                             The	
  name	
  of	
  a	
  previously	
  created	
  XML	
  file	
  
A little bit of code to link both files (2/4)!

The	
  index.js	
  needs	
  to	
  define	
  the	
  acRon	
  for	
  onTableClick	
  


                              var	
  ezR=require('ezR');	
  
                              	
  
                              funcRon	
  onTableClick(e){	
  
                                      	
  ezR.openWinFromRow(e.rowData);                         	
  	
  
                              }	
  
                              	
  
                              $.index.open();	
  
                                      	
      	
  	
  




Remember:	
  every	
  screen	
  or	
  controller	
  is	
  a	
  combinaRon	
  of	
  3	
  files:	
  XML,	
  TSS,	
  JS	
  
A little bit of code to link both files (3/4)!

On	
  each	
  “joke”	
  page,	
  define	
  the	
  acRon	
  for	
  the	
  “back”	
  bu"on	
  




 <Bu"on	
  id="backbu"on"	
  plaYorm="ios"	
  onClick="closeme">Back</Bu"on> 	
  
    	
  	
  
A little bit of code to link both files (4/4)!

Define	
  the	
  acRon	
  for	
  the	
  closeme	
  



                     var	
  ezR=require('ezR');	
  
                     	
  
                     funcRon	
  closeme(e){	
  
                             	
  ezR.closeWin($.turkeycrossing); 	
  	
  
                     }	
  
                             	
  	
  
Startup images and App Icons!

Titanium	
  provides	
  templates	
  for	
  all	
  the	
  images	
  you	
  need.	
  	
  Simply	
  
replace	
  with	
  your	
  own.	
  
h"p://ratking.de/2012/10/06/mini-­‐ludum-­‐dare-­‐37-­‐a-­‐not-­‐game-­‐jam-­‐part-­‐2/	
  
The same code could be repurposed!
Some Apps built with Titanium!
Much more!

•  Command-line interface!
•  Modules, Widgets, Sync Adapters!
•  ACS – Appcelerator Cloud Services!
•  Gaming via Lanica.com!
•  Enterprise-ready!!
Code + Slides!

Code available at !
    http://github.com/ricardoalcocer!
!
Slides available at!
     http://speakerdeck.com/ricardoalcocer!
     http://slideshare.net/ralcocer!
                        !
                        !
Community Support!

!
                             !
                  Appcelerator Q&A !
    https://developer.appcelerator.com/questions/newest!
                           !
                         Twitter!
              https://twitter.com/appcelerator!
                               !
                               !
                               !
?	
  
Questions?

     

     !
Thank you!

ralcocer@appcelerator.com!
              !
  Twitter: @ricardoalcocer!
Develop your first mobile App for iOS and Android

More Related Content

What's hot

Face/Off: APEX Templates & Themes
Face/Off: APEX Templates & ThemesFace/Off: APEX Templates & Themes
Face/Off: APEX Templates & Themes
crokitta
 
Assignment 4 Paparazzi1
Assignment 4 Paparazzi1Assignment 4 Paparazzi1
Assignment 4 Paparazzi1Mahmoud
 
wexarts.org iPhone Project: Developer Documentation
wexarts.org iPhone Project: Developer Documentationwexarts.org iPhone Project: Developer Documentation
wexarts.org iPhone Project: Developer Documentationtutorialsruby
 
Coding Lesson (iOS for non-developers) by Zakery Kline and Roger Kerse
Coding Lesson (iOS for non-developers) by Zakery Kline and Roger KerseCoding Lesson (iOS for non-developers) by Zakery Kline and Roger Kerse
Coding Lesson (iOS for non-developers) by Zakery Kline and Roger KerseEuropean Innovation Academy
 
DOSUG Java FX Script From Takeoff To Cruising Altitude
DOSUG Java FX Script From Takeoff To Cruising AltitudeDOSUG Java FX Script From Takeoff To Cruising Altitude
DOSUG Java FX Script From Takeoff To Cruising Altitude
Matthew McCullough
 
Creating a Component Library
Creating a Component LibraryCreating a Component Library
Creating a Component Library
nathanacurtis
 
Building iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360FlexBuilding iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360Flex
danielwanja
 

What's hot (9)

Face/Off: APEX Templates & Themes
Face/Off: APEX Templates & ThemesFace/Off: APEX Templates & Themes
Face/Off: APEX Templates & Themes
 
Assignment 4 Paparazzi1
Assignment 4 Paparazzi1Assignment 4 Paparazzi1
Assignment 4 Paparazzi1
 
wexarts.org iPhone Project: Developer Documentation
wexarts.org iPhone Project: Developer Documentationwexarts.org iPhone Project: Developer Documentation
wexarts.org iPhone Project: Developer Documentation
 
Web app
Web appWeb app
Web app
 
Web app
Web appWeb app
Web app
 
Coding Lesson (iOS for non-developers) by Zakery Kline and Roger Kerse
Coding Lesson (iOS for non-developers) by Zakery Kline and Roger KerseCoding Lesson (iOS for non-developers) by Zakery Kline and Roger Kerse
Coding Lesson (iOS for non-developers) by Zakery Kline and Roger Kerse
 
DOSUG Java FX Script From Takeoff To Cruising Altitude
DOSUG Java FX Script From Takeoff To Cruising AltitudeDOSUG Java FX Script From Takeoff To Cruising Altitude
DOSUG Java FX Script From Takeoff To Cruising Altitude
 
Creating a Component Library
Creating a Component LibraryCreating a Component Library
Creating a Component Library
 
Building iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360FlexBuilding iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360Flex
 

Similar to Develop your first mobile App for iOS and Android

Titanium Alloy Tutorial
Titanium Alloy TutorialTitanium Alloy Tutorial
Titanium Alloy Tutorial
Fokke Zandbergen
 
Real World ionic Development
Real World ionic DevelopmentReal World ionic Development
Real World ionic Development
Chris Griffith
 
Building Better Web Apps with Angular.js (SXSW 2014)
Building Better Web Apps with Angular.js (SXSW 2014)Building Better Web Apps with Angular.js (SXSW 2014)
Building Better Web Apps with Angular.js (SXSW 2014)
kbekessy
 
Tutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJSTutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJS
Philipp Burgmer
 
Titanium Studio [Updated - 18/12/2011]
Titanium Studio [Updated - 18/12/2011]Titanium Studio [Updated - 18/12/2011]
Titanium Studio [Updated - 18/12/2011]
Sentinel Solutions Ltd
 
Jetpack Compose - Android’s modern toolkit for building native UI
Jetpack Compose - Android’s modern toolkit for building native UIJetpack Compose - Android’s modern toolkit for building native UI
Jetpack Compose - Android’s modern toolkit for building native UI
Gilang Ramadhan
 
Beyond Responsive Web Design - Moving your web agency to mobile development (...
Beyond Responsive Web Design - Moving your web agency to mobile development (...Beyond Responsive Web Design - Moving your web agency to mobile development (...
Beyond Responsive Web Design - Moving your web agency to mobile development (...
craigharmonic
 
Cross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkCross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic Framework
Troy Miles
 
Getting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumGetting started with Appcelerator Titanium
Getting started with Appcelerator Titanium
Techday7
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />tutorialsruby
 
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dee Sadler
 
Cross-Platform Development using Angulr JS in Visual Studio
Cross-Platform Development using Angulr JS in Visual StudioCross-Platform Development using Angulr JS in Visual Studio
Cross-Platform Development using Angulr JS in Visual StudioMizanur Sarker
 
Hybrid app development with ionic
Hybrid app development with ionicHybrid app development with ionic
Hybrid app development with ionic
Wan Muzaffar Wan Hashim
 
Offline of web applications
Offline of web applicationsOffline of web applications
Offline of web applications
FDConf
 
Offline for web - Frontend Dev Conf Minsk 2014
Offline for web - Frontend Dev Conf Minsk 2014Offline for web - Frontend Dev Conf Minsk 2014
Offline for web - Frontend Dev Conf Minsk 2014
Jan Jongboom
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX Designers
Ashlimarie
 
Getting started with titanium
Getting started with titaniumGetting started with titanium
Getting started with titanium
Naga Harish M
 
Angularjs Tutorial for Beginners
Angularjs Tutorial for BeginnersAngularjs Tutorial for Beginners
Angularjs Tutorial for Beginners
rajkamaltibacademy
 
Building Mobile Applications with Ionic
Building Mobile Applications with IonicBuilding Mobile Applications with Ionic
Building Mobile Applications with Ionic
Morris Singer
 

Similar to Develop your first mobile App for iOS and Android (20)

Titanium Alloy Tutorial
Titanium Alloy TutorialTitanium Alloy Tutorial
Titanium Alloy Tutorial
 
Real World ionic Development
Real World ionic DevelopmentReal World ionic Development
Real World ionic Development
 
Building Better Web Apps with Angular.js (SXSW 2014)
Building Better Web Apps with Angular.js (SXSW 2014)Building Better Web Apps with Angular.js (SXSW 2014)
Building Better Web Apps with Angular.js (SXSW 2014)
 
Tutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJSTutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJS
 
Titanium Studio [Updated - 18/12/2011]
Titanium Studio [Updated - 18/12/2011]Titanium Studio [Updated - 18/12/2011]
Titanium Studio [Updated - 18/12/2011]
 
Jetpack Compose - Android’s modern toolkit for building native UI
Jetpack Compose - Android’s modern toolkit for building native UIJetpack Compose - Android’s modern toolkit for building native UI
Jetpack Compose - Android’s modern toolkit for building native UI
 
Beyond Responsive Web Design - Moving your web agency to mobile development (...
Beyond Responsive Web Design - Moving your web agency to mobile development (...Beyond Responsive Web Design - Moving your web agency to mobile development (...
Beyond Responsive Web Design - Moving your web agency to mobile development (...
 
Cross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkCross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic Framework
 
Getting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumGetting started with Appcelerator Titanium
Getting started with Appcelerator Titanium
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile design
 
Intro to appcelerator
Intro to appceleratorIntro to appcelerator
Intro to appcelerator
 
Cross-Platform Development using Angulr JS in Visual Studio
Cross-Platform Development using Angulr JS in Visual StudioCross-Platform Development using Angulr JS in Visual Studio
Cross-Platform Development using Angulr JS in Visual Studio
 
Hybrid app development with ionic
Hybrid app development with ionicHybrid app development with ionic
Hybrid app development with ionic
 
Offline of web applications
Offline of web applicationsOffline of web applications
Offline of web applications
 
Offline for web - Frontend Dev Conf Minsk 2014
Offline for web - Frontend Dev Conf Minsk 2014Offline for web - Frontend Dev Conf Minsk 2014
Offline for web - Frontend Dev Conf Minsk 2014
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX Designers
 
Getting started with titanium
Getting started with titaniumGetting started with titanium
Getting started with titanium
 
Angularjs Tutorial for Beginners
Angularjs Tutorial for BeginnersAngularjs Tutorial for Beginners
Angularjs Tutorial for Beginners
 
Building Mobile Applications with Ionic
Building Mobile Applications with IonicBuilding Mobile Applications with Ionic
Building Mobile Applications with Ionic
 

More from ralcocer

Multi platform development using titanium + alloy
Multi platform development using titanium + alloyMulti platform development using titanium + alloy
Multi platform development using titanium + alloy
ralcocer
 
Building websites with Node.ACS
Building websites with Node.ACSBuilding websites with Node.ACS
Building websites with Node.ACS
ralcocer
 
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese versionSlides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese versionralcocer
 
Appcelerator Alloy Deep Dive - tiTokyo 2013
Appcelerator Alloy Deep Dive - tiTokyo 2013Appcelerator Alloy Deep Dive - tiTokyo 2013
Appcelerator Alloy Deep Dive - tiTokyo 2013
ralcocer
 
Learning Appcelerator® Alloy™
Learning Appcelerator® Alloy™Learning Appcelerator® Alloy™
Learning Appcelerator® Alloy™
ralcocer
 
De Wordpress.com a Wordpress.org
De Wordpress.com a Wordpress.orgDe Wordpress.com a Wordpress.org
De Wordpress.com a Wordpress.org
ralcocer
 
Barcamp Mayaguez 2012
Barcamp Mayaguez 2012Barcamp Mayaguez 2012
Barcamp Mayaguez 2012
ralcocer
 
Cómo crear plugins para Wordpress
Cómo crear plugins para WordpressCómo crear plugins para Wordpress
Cómo crear plugins para Wordpress
ralcocer
 
Open Source, estándares y arquitecturas Web 2.0
Open Source, estándares y arquitecturas Web 2.0Open Source, estándares y arquitecturas Web 2.0
Open Source, estándares y arquitecturas Web 2.0
ralcocer
 
El pensamiento crítico y el uso de tecnología
El pensamiento crítico y el uso de tecnologíaEl pensamiento crítico y el uso de tecnología
El pensamiento crítico y el uso de tecnología
ralcocer
 
El OpenSource en la educación
El OpenSource en la educaciónEl OpenSource en la educación
El OpenSource en la educación
ralcocer
 
El valor educativo del Open Source
El valor educativo del Open SourceEl valor educativo del Open Source
El valor educativo del Open Source
ralcocer
 
Presentación APH
Presentación APHPresentación APH
Presentación APH
ralcocer
 
Educapr Oct2010
Educapr Oct2010Educapr Oct2010
Educapr Oct2010
ralcocer
 
The Future is Open - Pechakucha@SeriouslyCreative - August 26, 2010
The Future is Open - Pechakucha@SeriouslyCreative - August 26, 2010The Future is Open - Pechakucha@SeriouslyCreative - August 26, 2010
The Future is Open - Pechakucha@SeriouslyCreative - August 26, 2010
ralcocer
 

More from ralcocer (15)

Multi platform development using titanium + alloy
Multi platform development using titanium + alloyMulti platform development using titanium + alloy
Multi platform development using titanium + alloy
 
Building websites with Node.ACS
Building websites with Node.ACSBuilding websites with Node.ACS
Building websites with Node.ACS
 
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese versionSlides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese version
 
Appcelerator Alloy Deep Dive - tiTokyo 2013
Appcelerator Alloy Deep Dive - tiTokyo 2013Appcelerator Alloy Deep Dive - tiTokyo 2013
Appcelerator Alloy Deep Dive - tiTokyo 2013
 
Learning Appcelerator® Alloy™
Learning Appcelerator® Alloy™Learning Appcelerator® Alloy™
Learning Appcelerator® Alloy™
 
De Wordpress.com a Wordpress.org
De Wordpress.com a Wordpress.orgDe Wordpress.com a Wordpress.org
De Wordpress.com a Wordpress.org
 
Barcamp Mayaguez 2012
Barcamp Mayaguez 2012Barcamp Mayaguez 2012
Barcamp Mayaguez 2012
 
Cómo crear plugins para Wordpress
Cómo crear plugins para WordpressCómo crear plugins para Wordpress
Cómo crear plugins para Wordpress
 
Open Source, estándares y arquitecturas Web 2.0
Open Source, estándares y arquitecturas Web 2.0Open Source, estándares y arquitecturas Web 2.0
Open Source, estándares y arquitecturas Web 2.0
 
El pensamiento crítico y el uso de tecnología
El pensamiento crítico y el uso de tecnologíaEl pensamiento crítico y el uso de tecnología
El pensamiento crítico y el uso de tecnología
 
El OpenSource en la educación
El OpenSource en la educaciónEl OpenSource en la educación
El OpenSource en la educación
 
El valor educativo del Open Source
El valor educativo del Open SourceEl valor educativo del Open Source
El valor educativo del Open Source
 
Presentación APH
Presentación APHPresentación APH
Presentación APH
 
Educapr Oct2010
Educapr Oct2010Educapr Oct2010
Educapr Oct2010
 
The Future is Open - Pechakucha@SeriouslyCreative - August 26, 2010
The Future is Open - Pechakucha@SeriouslyCreative - August 26, 2010The Future is Open - Pechakucha@SeriouslyCreative - August 26, 2010
The Future is Open - Pechakucha@SeriouslyCreative - August 26, 2010
 

Recently uploaded

FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 

Develop your first mobile App for iOS and Android

  • 1.
  • 2. Develop your first mobile App for iOS and Android! Ricardo Alcocer // Platform Evangelist! March 12, 2013! Silicon Valley Titanium User Group!
  • 4. Our objective for today! ! BUILD AN APP!
  • 5. Base assumptions! •  You are not a “hardcore coder”! •  You know how to build websites with HTML and CSS! •  You have seen at least a little bit of Javascript!
  • 6. About Appcelerator Titanium! •  Not a language, but a high-level Javascript SDK! •  Allows you build Native Apps for iOS (iPhone, iPod Touch, iPad), Android (Phone and Tablet), Mobile Web, Blackberry 10 (beta), soon for Windows 8 and Tizen! •  Free/Open Source!! •  It’s Native, NOT web app !
  • 7. The design of your App is
 SUPER important! If the users don't like how your App LOOKS ! ! they will delete it!! h"p://www.itexico.com/blog/bid/91499/Why-­‐your-­‐Mobile-­‐App-­‐s-­‐UX-­‐UI-­‐must-­‐be-­‐Awesome  
  • 9. Harmony between design and functionalities!
  • 10. The MVC Pattern! JS   Model   XML   JS   View   TSS   Controller   User  Interface  Components   Invisible  to  the  end-­‐user  
  • 11. Designers and developers can now get along! h"p://images.elephantjournal.com/wp-­‐content/uploads/2012/01/dog-­‐and-­‐cat-­‐sleeping-­‐together.jpg  
  • 13. Make sure you download Studio!
  • 14. Configure platform SDKs! SDKs  allow  you  to  compile  with  the  naRve  tools  and  provide  you  with  Phone  Simulators  for  tesRng  
  • 16. Now you can follow the “Quick Start Guide”, or….!
  • 17. …you can try to fly! h"p://amazingjpg.blogspot.com/2012/11/reckless-­‐abandon-­‐photo-­‐by-­‐peter-­‐brannon.html  
  • 18. Titanium is very powerful, so better get your training wheels on! h"p://www.justsaypictures.com/images/training-­‐wheels-­‐01.jpg  
  • 19. Let’s build a “Jokes” App!
  • 20. Let’s create a new project!
  • 22. Select Alloy as your Titanium Project Type!
  • 23. Configure your project! Name  for  your  App   In  reverse  URL  format:  ie.  (com.mycompany.myapp)     Select  target  plaYorms  for  this  project   Are  you  using  Appcelerator  Cloud  Services?  
  • 25. These  one  implement  funcRonaliRes     and  interacRvity   We  won’t  look  at  these   These  two  work  together  to  build  UI   Remember?  
  • 26. Running an App! You’ll  only  see  the  target   plaYorms  you  explicitly     configured     iPhone  is  only  available  on  Mac   Android  is  available  on  Win,   Mac  and  Linux  
  • 27. Default App running on iPhone Simulator!
  • 28. Default index.xml! <Alloy>        <Window  class="container">                            <Label  id="label"  onClick="doClick">Hello,  World</Label>        </Window>   </Alloy>  
  • 29. Objects in index.xml! <Alloy>        <Window  class="container">                            <Label  id="label"  onClick="doClick">Hello,  World</Label>        </Window>   </Alloy>  
  • 30. index.xml + index.tss working together! XML   <Alloy>        <Window  class="container">              <Label  id="label"  onClick="doClick">Hello,  World</Label>        </Window>   </Alloy>   TSS   ".container":  {        backgroundColor:"white"   },   "Label":  {        width:  Ti.UI.SIZE,        height:  Ti.UI.SIZE,        color:  "#000"   }  
  • 31. ! Enough of the basics. Let’s get started!!
  • 32. Back to our “Jokes” App!
  • 33. Thinking as a Web developer! PAGE   DIV   DIV   DIV   DIV   DIV   DIV   DIV   DIV  
  • 34. Thinking as a Web developer! PAGE   DIV   DIV   DIV   DIV  
  • 35. Native iOS and Andoroid UI Elements! h"p://www.teehanlax.com/blog/ios-­‐6-­‐gui-­‐psd-­‐iphone-­‐5/   h"p://www.teehanlax.com/blog/android-­‐2-­‐3-­‐4-­‐gui-­‐psd-­‐high-­‐density/  
  • 36. Titanium allows you to use native platform elements! h"p://docs.appcelerator.com/Rtanium/3.0/#!/api  
  • 37. The vocabulary is well documented! h"p://docs.appcelerator.com/Rtanium/3.0/#!/api/Titanium.UI.Window  
  • 38. In Titanium Terms! Window   VIEW   VIEW   VIEW   TableView   VIEW   VIEW   VIEW   VIEW   VIEW  
  • 39. In Titanium Terms! WINDOW   VIEW   VIEW   VIEW   VIEW  
  • 40. Building the App Structure (XML)! Expected  Result   <Alloy>      <Window  class="container">          <View  id="header">              <View  id="appicon"></View>              <Label  id="apptitle">Funny  Stuff</Label>          </View>          <TableView  id="mainlist">              <TableViewRow  id="listrow">                  <View  id="rowContainer">                      <View  id="rowIcon"></View>                      <Label  id="rowTitle">Some  Title</Label>                      <View  id="rowTypeContainer">                          <Label  id="rowTypeCaption">Type:</Label>                          <Label  id="rowTypeData">Some  Type</Label>                      </View>                  </View>              </TableViewRow>          </TableView>      </Window>   </Alloy>  
  • 41. Building the App Structure (XML)! Expected  Result   <Alloy>      <Window  class="container">          <View  id="header">              <View  id="appicon"></View>              <Label  id="apptitle">Funny  Stuff</Label>          </View>          <TableView  id="mainlist">              <TableViewRow  id="listrow">                  <View  id="rowContainer">                      <View  id="rowIcon"></View>                      <Label  id="rowTitle">Some  Title</Label>                      <View  id="rowTypeContainer">                          <Label  id="rowTypeCaption">Type:</Label>                          <Label  id="rowTypeData">Some  Type</Label>                      </View>                  </View>              </TableViewRow>          </TableView>      </Window>   </Alloy>  
  • 42. Hey! That’s not what I wanted! We  need  to  apply  styling  to  the  elements.    Let’s  start  with  container  and  header  
  • 43. Styling the main “container” and “header”! ".container":  {      backgroundColor:"white",      layout:  'vertical'   },   "#header":{      height:  "50dp",      backgroundColor:  "blue"   }   Next:  the  “appicon”  area  
  • 44. Styling the “appicon”! "#appicon":{      width:  "50dp",      height:  "50dp",      left:  "0",      backgroundColor:  "#fff"   }   Next:  let’s  specify  a  height  for  the  “rowContainer”  
  • 45. The App so far! "#rowContainer":{    height:  "60dp"   }   Next:  the  “rowIcon”  area  
  • 46. The App so far! "#rowIcon":{      lek:  “5dp”,      height:  "50dp",      width:  "50dp",      backgroundColor:  "red  "   }   Next:  the  rest  of  the  elements  in  the  “rowContainer”  
  • 47. The App so far! "#rowTitle":{      lek:  "60dp",      top:  "5dp",      width:  Ti.UI.SIZE,   },   "#rowTypeContainer":{      bo"om:  "5dp",      height:  "20dp",      width:  Ti.UI.SIZE,      layout:  "horizontal",      lek:  "60dp"   },   "#rowTypeCapRon":{      height:  Ti.UI.SIZE,      width:  Ti.UI.SIZE   },   "#rowTypeData":{      height:  Ti.UI.SIZE,      width:  Ti.UI.SIZE   }   Next:  some  colors  on  the  row  elements  
  • 48. The App so far! "#rowTypeCapRon":{      height:  Ti.UI.SIZE,      width:  Ti.UI.SIZE,      font:  {          fontSize:  "12dp"      }   },   "#rowTypeData":{      height:  Ti.UI.SIZE,      width:  Ti.UI.SIZE,      font:  {          fontSize:  "12dp"      }   }   Next:  some  colors  on  the  “header”  area  
  • 49. The App so far! "#header":{      height:  "50dp",      backgroundColor:  "#4698D6"   },   "#appRtle":{      font:  {          fontSize:  "20dp",      fontWeight:  "bold"      },      color:  "#fff"   }     Next:    more  styling  on  the  table  rows  
  • 50. The App so far! "#rowContainer":{      height:  "60dp",    top:  "5dp",      right:  "5dp",      bo"om:  "5dp",      lek:  "5dp",      borderWidth:  1,      borderColor:  "#cacaca",      borderRadius:  5   }     Next:  some  more  colors  on  the  table  row    
  • 51. The App so far! "#rowContainer":{      height:  "60dp",      top:  "5dp",    right:  "5dp",      bo"om:  "5dp",      lek:  "5dp",      backgroundColor:  "#f9f9f9",      borderWidth:  1,      borderColor:  "#cacaca",      borderRadius:  5   },   "#rowTypeCapRon":{      height:  Ti.UI.SIZE,      width:  Ti.UI.SIZE,      font:  {          fontSize:  "12dp",          fontWeight:  "bold"      },      color:  "#B73B22"   }     Next:  the  icon  on  the  row  
  • 52. The App so far! Images  live  inside  the  /assets  folder.   We’ll  make  this  change  on  the  XML,  so  we  can   assign  different  images  to  each  row:   <View  id="rowIcon"  backgroundImage="/happyface.png"></View>   Next:  the  icon  on  the  “header”  
  • 53. The App so far! "#appicon":{      width:  "50dp",      height:  "50dp",      lek:  "0",      backgroundImage:  "/topicon.png"   }     Finally:  some  real  data  on  the  table  row  
  • 54. The App so far! Go  to  your  index.xml  file  and  change  the  placeholder  data   <TableViewRow  id="listrow">    <View  id="rowContainer">              <View  id="rowIcon"  backgroundImage="/happyface.png"></View>              <Label  id="rowTitle">Why  did  the  turkey  cross  the  road?</Label>              <View  id="rowTypeContainer">                    <Label  id="rowTypeCapRon">Type:</Label>                    <Label  id="rowTypeData">Joke</Label>              </View>        </View>   </TableViewRow>   To  add  more  rows,  copy  and  paste  this  code  block!  
  • 56. The App so far! Use  the  same  procedure  to  create  the  template  for   the  second  page.    I’ll  leave  that  to  you   TIPS:       1.  In  Studio,  right-­‐click  in  the  files  area,  select  New  >   Alloy  Controller   2.  You  could  move  ALL  your  TSS  to  “app.tss”.    This  is   a  global  file  that  holds  styling  that  will  be  shared   by  all  screens    
  • 57. A little bit of code to link both files (1/4)! The  index.xml  file  needs  to  know  what  to  do  when  you  click  on  the  rows   <TableView  id="mainlist"  onClick="onTableClick">    <TableViewRow  id="listrow"  ezawin="turkeycrossing">         The  name  of  a  previously  created  XML  file  
  • 58. A little bit of code to link both files (2/4)! The  index.js  needs  to  define  the  acRon  for  onTableClick   var  ezR=require('ezR');     funcRon  onTableClick(e){    ezR.openWinFromRow(e.rowData);     }     $.index.open();         Remember:  every  screen  or  controller  is  a  combinaRon  of  3  files:  XML,  TSS,  JS  
  • 59. A little bit of code to link both files (3/4)! On  each  “joke”  page,  define  the  acRon  for  the  “back”  bu"on   <Bu"on  id="backbu"on"  plaYorm="ios"  onClick="closeme">Back</Bu"on>      
  • 60. A little bit of code to link both files (4/4)! Define  the  acRon  for  the  closeme   var  ezR=require('ezR');     funcRon  closeme(e){    ezR.closeWin($.turkeycrossing);     }      
  • 61. Startup images and App Icons! Titanium  provides  templates  for  all  the  images  you  need.    Simply   replace  with  your  own.  
  • 63. The same code could be repurposed!
  • 64. Some Apps built with Titanium!
  • 65. Much more! •  Command-line interface! •  Modules, Widgets, Sync Adapters! •  ACS – Appcelerator Cloud Services! •  Gaming via Lanica.com! •  Enterprise-ready!!
  • 66. Code + Slides! Code available at ! http://github.com/ricardoalcocer! ! Slides available at! http://speakerdeck.com/ricardoalcocer! http://slideshare.net/ralcocer! ! !
  • 67. Community Support! ! ! Appcelerator Q&A ! https://developer.appcelerator.com/questions/newest! ! Twitter! https://twitter.com/appcelerator! ! ! !
  • 69. Thank you! ralcocer@appcelerator.com! ! Twitter: @ricardoalcocer!