SlideShare une entreprise Scribd logo
1  sur  58
TITANIUM
        Eric Cavalcanti
ecavalcanti@gmail.com
              @ericoc
Apoiada pela Storm Ventures, Sierra Ventures e eBay.
Appcelerator Inc. foi fundada em 2006 por especialista em
                   desenvolvimento web.
O QUE É O TITANIUM?
Titanium é um framework open source para construir
aplicações móveis (ou desktop) nativas usando tecnologias
web abertas (JavaScript - opcionalmente HTML e CSS)
POR QUE NATIVA?

O usuário já está acostumado em utilizar aplicações nativas em
seu dispositivo

O tempo de resposta de uma UI nativa é menor

Aumentamos consideravelmente a probabilidade de aprovação
por lojas mais criteriosas
PLATAFORMA SUPORTADAS
Desktop

     Win 32

     Mac OS X (Intel)

     Linux

Mobile

     iPhone/iPod (3.1 ou mais recente)

     Android (1.6 ou mais recente)

     iPad

BlackBerry
LICENÇA
SDKs e Titanium Studio – open source e free

Licença Apache 2.0

Serviços comerciais de treinamento e suporte

Outros serviços comerciais como o Analytics
QUEM USA?




            ... e mais
SHOWCASE




http://www.appcelerator.com/showcase/
                applications-showcase/
PLATAFORMA TITANIUM
FUNDAMENTOS

Uma aplicação Titanium é um programa JavaScript que é
interpretado em tempo de execução no dispositivo

Não roda dentro de um browser

Webkit JavaScriptCore no iOS

Rhino no Android / BlackBerry (em breve V8 no Android)
CROSS-PLATFORM

Cross-platform != “Write Once, Run Everywhere”

100% de reuso de código não visual

Boa parte do código de UI é reusada, dependendo do design

Melhor experiência do usuário em cada plataforma

Titanium é “Write Once, Adapt Everywhere”
TITANIUM FEATURES
Native User Experience                Multimedia
Native performance + Native UI        Camera, video camera,
(tables, animations, gestures…etc.)   streaming/device audio/video


Location-based services               Analytics
Augmented reality, geo-location,      Custom analytics baked into every
compass, native maps                  application, track usage patterns
                                      and adoption

Social sharing                        Titanium+Plus
Authenticated access to Facebook,     Encrypted database, ecommerce,
Twitter, Yahoo YQL.                   ads, barcode scanners, custom
Native email/address book             analytics, in-app purchase

Data                                  Development tools
Local SQLite data store, web          Create, test, and publish your app
services, lightweight key/value       using the same tools across
store                                 platforms
OPEN MOBILE MARKETPLACE
   http://marketplace.appcelerator.com
PRÉ-REQUISITOS

Mac OS X 10.6 (Snow Leopard) ou 10.7 (Lion)

Windows XP (todas edições, exceto Starter Edition)

Windows 7

Ubuntu Linux 10.04

iOS SDK

Android SDK
TITANIUM STUDIO E SDKS

Titanium Studio é uma IDE baseada no eclipse que
interage com vários scripts Python contidos no
Titanium SDK

Os scripts interagem com
as ferramentas nativas de
cada plataforma
CRIANDO UM NOVO
     PROJETO
PROJETO EM EXECUÇÃO
RESOURCES ESPECÍFICOS DE
   CADA PLATAFORMA

Subpastas da pasta Resources

  android

  iphone
RECURSOS ESPECÍFICOS DE
    CADA PLATAFORMA

Android: intents, background services, hardware menu button

iOS: routes in map, pre-built animations, custom fonts, Cocoa UI

APIs específicas de cada plataforma são implementadas em
namespace específicos para a plataforma.

Ex. Titanium.Android.Menu
EXECUTANDO CÓDIGO ESPECÍFICO PARA UMA


        PLATAFORMA


if (Ti.Platform.osname == "iphone") {
	 ...
} else {
	 ...
}
TIPOS DE APLICAÇÕES


Tab Group
Single Window
Window Stack
PARA DESENVOLVEDORES
           WEB...

Uma “window” seria similar a uma “página”

Uma “view” seria similar a uma “div”

O namespace TI.UI fornece vários componentes visuais (buttons,
text field, pickers, maps, scroll views)
EXEMPLO
TABLEVIEW
 
var win1 = Titanium.UI.createWindow({
"   backgroundColor:"#fff"
});
var dados = [
"   "    {title:"Row 1 - simple row"},
"   "    {title:"Row 2 - with child", hasChild:true},
"   "    {title:"Row 3 - with detail", hasDetail:true},
"   "    {title:"Row 4 - with check", hasCheck:true},
"   "    {title:"Row 5 - red background", backgroundColor:"#f00"}
"   ];"  
var table1 = Titanium.UI.createTableView({
"   data:dados
});
 
win1.add(table1);
win1.open();
TABELAS AGRUPADAS
var table1 = Titanium.UI.createTableView({
"    style:Titanium.UI.iPhone.TableViewStyle.GROUPED
});
 
var section1 = Titanium.UI.createTableViewSection();
section1.headerTitle = "Hello";
var row1 = Titanium.UI.createTableViewRow({title:"Hello   1"});
var row2 = Titanium.UI.createTableViewRow({title:"Hello   2"});
section1.add(row1);
section1.add(row2);
 
var section2 = Titanium.UI.createTableViewSection();
section2.headerTitle = "Hello2";
var row3 = Titanium.UI.createTableViewRow({title:"Hello   3"});
var row4 = Titanium.UI.createTableViewRow({title:"Hello   4"});
section2.add(row3);
section2.add(row4);
 
table1.setData([section1,section2]);
TABLEVIEW EDITÁVEIS
           SOMENTE NO IOS


// create table view
var tableview = Titanium.UI.createTableView({
	 data:data,
	 editable:true,
	 top:50
});

tableview.editing = true;

tableview.editing = false;
SCROLLABLEVIEW
Permite o scroll horizontal de uma ou mais views através do
gesto slider
        var image1 = Ti.UI.createImageView({
        	    image:'image1.jpg'
        });
        var image2 = Ti.UI.createImageView({
        	    image:'image2.jpg'
        });
        var image3 = Ti.UI.createImageView({
        	    image:'image3.jpg'
        });

        var win = Ti.UI.createWindow({
        	    backgroundColor:'black'
        });

        var scrollView = Ti.UI.createScrollableView({
        	    views:[image1, image2, image3],
        	    showPagingControl:true,
        	    pagingControlHeight:30
        });

        win.add(scrollView);
        win.open();
ESTILOS
STYLE COM JSS
                (JAVASCRIPT STYLESHEETS)

app.js
!"#$%&'()%$*$+&,-.,/#0"102&'()%34$
$$&(56%6$
789$
!"#$:;11)'$*$+&,-.,/#0"10<;11)'34$
$$&(56:6=$
$$1&1>056?0>>)6$
789$
!"#$%&'@$*$+&1"'&;A,-.,/#0"102&'()%34/>"BBC"A056%&'<>;06789$


app.jss
!"#$#
##%&'()*+,-./'+0+*12*3.24#
5#
%,66+-#$#
##"7.6819::;<4#
##837)861=:;<4#
5#
>"7-?0,3#$#
##%&'()*+,-./'+0+*12%0,324#
5#
JSS POR PLATAFORMA

app.jss

app.android.jss

app.android.high.jss

app.android.medium.jss

app.android.low.jss

app.iphone.jss
BANCO DE DADOS E SISTEMA
DE ARQUIVOS
DADOS LOCAIS
Titanium.App.Properties
  Ideal para armazenar configurações da aplicação

Titanium.Filesystem
  Utilizado para manipulação do sistema de arquivos

Titanium.Database
  Permite o acesso local a banco de dados SQLite
DADOS REMOTOS
HTTPCLIENT


Ti.Network.HTTPClient implementa a
especificação XHR (XMLHttpRequest)
Familiar para programadores Ajax
MULTIMÍDIA
API DE ÁUDIO


Executa arquivo de som local ou remoto (Sound)

Suporte a stream de áudio (Audio Player)

Suporte a gravação de áudio (no android via intent)
EXECUTANDO
                                        AUDIO
var win = Ti.UI.createWindow({
	    backgroundColor:'#FFF'
})

var sound = Ti.Media.createSound({
	    url:'music/u2.mp3'
});

var button = Ti.UI.createButton({
	    title:'Play Sound',
	    width:250,
	    height:35
});

button.addEventListener('click', function(e){
	    sound.play();
})

win.add(button);
win.open();
API DE VÍDEO


Executa arquivos de vídeo local

Suporte a stream de vídeo (somente no iOS)

Suporte a captura de vídeo (no android via intent)
EXECUTANDO
                                 VÍDEO
var win = Ti.UI.createWindow({
	   backgroundColor:'#000'
});

var video = Ti.Media.createVideoPlayer({
	   url:'video/movie.mp4',
	   backgroundColor:'#000'
});

// No android você não adiciona o video player na
window
if (Ti.Platform.osname != 'android') {
	   win.add(video);
}
win.open();
video.play();
CÂMERA
 Interagir com a câmera
embutida do Android ou
          IPhone
CAPTURANDO UMA
                                  FOTO

Ti.Media.showCamera({
	   	    success:function(e) {
	   	    	   var image = e.media;
	   	    	   imgPhoto.image = image;
	   	    },
	   	    cancel:function() {},
	   	    error:function(e) {
	   	    	   alert.(e.code);
	   	    },
	   	    mediaTypes:[Ti.Media.MEDIA_TYPE_PHOTO]
});
GEOLOCALIZAÇÃO
E
MAPAS
UTILIZANDO A
            GEOLOCALIZAÇÃO


Ti.Geolocation.getCurrentPosition(function(e){
	   if (e.error) {
	   	    alert('Erro :' + e.error.message);
	   	    return;
	   }
	   Ti.API.info('Latitude: ' + e.coords.latitude);
	   Ti.API.info('Longitude: ' + e.coords.longitude);
});
UTILIZANDO
                                     MAPAS
var mountainView = Ti.Map.createAnnotation({
	    latitude:37.390749,
	    longitude:-122.081651,
	    title:'Appcelerator Headquarters',
	    subtitle:'Mountain View, CA',
	    pincolor:Ti.Map.ANNOTATION_RED,
	    animate:true
});

var mapView = Ti.Map.createView({
	    mapType:Ti.Map.STANDARD_TYPE,
	    region: {latitude:37.390749, longitude:-122.081651,
	    	    latitudeDelta:0.01, longitudeDelta:0.01},
	    animate:true,
	    regionFit:true,
	    annotations:[mountainView]
});

win.add(mapView);
ACELERÔMETRO
UTILIZANDO O
                 ACELERÔMETRO


Titanium.Accelerometer.addEventListener('update',function(e)
{
    Ti.API.debug("accelerometer - x:"+e.x+",y:"+e.y+",z:"+e.z);
});
Twitter Trends
APPCELERATOR WIKI
http://wiki.appcelerator.org/display/guides/Home
MOBILE API REFERENCE
http://developer.appcelerator.com/apidoc/mobile/latest
APPCELERATOR BLOG
http://developer.appcelerator.com/blog/
COMMUNITY QUESTIONS & ANSWERS
   http://developer.appcelerator.com/questions
APPCELERATOR VIDEO CHANNEL
     http://vimeo.com/appcelerator
KITCHEN SINK
https://github.com/appcelerator/KitchenSink
OBRIGADO!


                Eric Cavalcanti
        ecavalcanti@gmail.com
                      @ericoc

Contenu connexe

Tendances

Curso: Desenvolvimento de aplicativos híbridos (dia 1)
Curso: Desenvolvimento de aplicativos híbridos (dia 1)Curso: Desenvolvimento de aplicativos híbridos (dia 1)
Curso: Desenvolvimento de aplicativos híbridos (dia 1)Wennder Santos
 
Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)Wennder Santos
 
Desenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaDesenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaNelson Glauber Leal
 
Hybrid app phonegap angular ionic
Hybrid app   phonegap angular ionicHybrid app   phonegap angular ionic
Hybrid app phonegap angular ionicJoelmir Ribacki
 
Palestra UFPR - Intro Ionic framework + WordPress
Palestra UFPR - Intro Ionic framework + WordPressPalestra UFPR - Intro Ionic framework + WordPress
Palestra UFPR - Intro Ionic framework + WordPressRômulo Zoch
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidRafael Sakurai
 
Phonegap, muito além dos nativos!
Phonegap, muito além dos nativos!Phonegap, muito além dos nativos!
Phonegap, muito além dos nativos!Luiz Gavinho
 
Curso de Android Aula 4
Curso de Android Aula 4Curso de Android Aula 4
Curso de Android Aula 4Jose Berardo
 
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e IonicCurso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e IonicFelipe Blini
 
Ionic + Cordova para Desenvolvimento Mobile
Ionic + Cordova para Desenvolvimento MobileIonic + Cordova para Desenvolvimento Mobile
Ionic + Cordova para Desenvolvimento MobileWaldyr Felix
 
Curso de Google Android - Aula 1
Curso de Google Android - Aula 1Curso de Google Android - Aula 1
Curso de Google Android - Aula 1Jose Berardo
 
Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1Erisvaldo Junior
 
Mobile Apps Cross-Platform
Mobile Apps Cross-PlatformMobile Apps Cross-Platform
Mobile Apps Cross-PlatformAdriel Café
 
UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PAR...
UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PAR...UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PAR...
UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PAR...Édipo Souza
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidJosé Alexandre Macedo
 

Tendances (20)

Curso: Desenvolvimento de aplicativos híbridos (dia 1)
Curso: Desenvolvimento de aplicativos híbridos (dia 1)Curso: Desenvolvimento de aplicativos híbridos (dia 1)
Curso: Desenvolvimento de aplicativos híbridos (dia 1)
 
Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)
 
3 curso-titanium-instalacao
3 curso-titanium-instalacao3 curso-titanium-instalacao
3 curso-titanium-instalacao
 
Framework Robotium
Framework RobotiumFramework Robotium
Framework Robotium
 
Desenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaDesenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certa
 
Android Aula 2
Android Aula 2Android Aula 2
Android Aula 2
 
Hybrid app phonegap angular ionic
Hybrid app   phonegap angular ionicHybrid app   phonegap angular ionic
Hybrid app phonegap angular ionic
 
Palestra UFPR - Intro Ionic framework + WordPress
Palestra UFPR - Intro Ionic framework + WordPressPalestra UFPR - Intro Ionic framework + WordPress
Palestra UFPR - Intro Ionic framework + WordPress
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao Android
 
PhoneGap
PhoneGapPhoneGap
PhoneGap
 
Phonegap, muito além dos nativos!
Phonegap, muito além dos nativos!Phonegap, muito além dos nativos!
Phonegap, muito além dos nativos!
 
Android Aula 1
Android Aula 1Android Aula 1
Android Aula 1
 
Curso de Android Aula 4
Curso de Android Aula 4Curso de Android Aula 4
Curso de Android Aula 4
 
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e IonicCurso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
 
Ionic + Cordova para Desenvolvimento Mobile
Ionic + Cordova para Desenvolvimento MobileIonic + Cordova para Desenvolvimento Mobile
Ionic + Cordova para Desenvolvimento Mobile
 
Curso de Google Android - Aula 1
Curso de Google Android - Aula 1Curso de Google Android - Aula 1
Curso de Google Android - Aula 1
 
Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1
 
Mobile Apps Cross-Platform
Mobile Apps Cross-PlatformMobile Apps Cross-Platform
Mobile Apps Cross-Platform
 
UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PAR...
UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PAR...UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PAR...
UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PAR...
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento Android
 

Similaire à Titanium Framework Guide

Introdução ao Google TV
Introdução ao Google TVIntrodução ao Google TV
Introdução ao Google TVAécio Costa
 
Curso de Introdução ao Android Básico
Curso de Introdução ao Android BásicoCurso de Introdução ao Android Básico
Curso de Introdução ao Android BásicoLuiz Carvalho
 
QConSP 2012: Sencha Touch 2: Mobile Multiplataforma
QConSP 2012: Sencha Touch 2: Mobile MultiplataformaQConSP 2012: Sencha Touch 2: Mobile Multiplataforma
QConSP 2012: Sencha Touch 2: Mobile MultiplataformaLoiane Groner
 
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?Desenvolvimento Mobile com Visual Studio 2008, por onde começar?
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?Stefanini
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Carlos Duarte do Nascimento
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Rodrigo Urubatan
 
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaChrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaJoselito Nascimento
 
Internet das Coisas com Android things e Machine Learning
Internet das Coisas com Android things e Machine LearningInternet das Coisas com Android things e Machine Learning
Internet das Coisas com Android things e Machine LearningAlvaro Viebrantz
 
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com SwiftSemcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com SwiftJuliana Chahoud
 
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-TouchDesenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-TouchCampus Party Brasil
 
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...Adriel Café
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma AndroidNatanael Fonseca
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Flávio Ribeiro
 

Similaire à Titanium Framework Guide (20)

Introdução ao Google TV
Introdução ao Google TVIntrodução ao Google TV
Introdução ao Google TV
 
Curso de Introdução ao Android Básico
Curso de Introdução ao Android BásicoCurso de Introdução ao Android Básico
Curso de Introdução ao Android Básico
 
QConSP 2012: Sencha Touch 2: Mobile Multiplataforma
QConSP 2012: Sencha Touch 2: Mobile MultiplataformaQConSP 2012: Sencha Touch 2: Mobile Multiplataforma
QConSP 2012: Sencha Touch 2: Mobile Multiplataforma
 
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?Desenvolvimento Mobile com Visual Studio 2008, por onde começar?
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_
 
Android Wear
Android WearAndroid Wear
Android Wear
 
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaChrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
 
Internet das Coisas com Android things e Machine Learning
Internet das Coisas com Android things e Machine LearningInternet das Coisas com Android things e Machine Learning
Internet das Coisas com Android things e Machine Learning
 
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com SwiftSemcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
 
Titanium
TitaniumTitanium
Titanium
 
Backend
Backend Backend
Backend
 
Caelum Day In Rio
Caelum Day In RioCaelum Day In Rio
Caelum Day In Rio
 
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-TouchDesenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
 
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
 
Android 2303
Android 2303Android 2303
Android 2303
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma Android
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
 
Apresentação Phonegap
Apresentação PhonegapApresentação Phonegap
Apresentação Phonegap
 

Plus de Eric Cavalcanti

Scrum Adoption in an Academic Distributed Environment
Scrum Adoption in an Academic Distributed EnvironmentScrum Adoption in an Academic Distributed Environment
Scrum Adoption in an Academic Distributed EnvironmentEric Cavalcanti
 
Utilizando o Padrão Presentation Model em Aplicações Flex
Utilizando o Padrão Presentation Model em Aplicações FlexUtilizando o Padrão Presentation Model em Aplicações Flex
Utilizando o Padrão Presentation Model em Aplicações FlexEric Cavalcanti
 
Desmistificando o cairngorm
Desmistificando o cairngormDesmistificando o cairngorm
Desmistificando o cairngormEric Cavalcanti
 
FireScrum - Ontem, Hoje e o Futuro
FireScrum - Ontem, Hoje e o FuturoFireScrum - Ontem, Hoje e o Futuro
FireScrum - Ontem, Hoje e o FuturoEric Cavalcanti
 

Plus de Eric Cavalcanti (9)

React Native - JSday
React Native - JSdayReact Native - JSday
React Native - JSday
 
Agile
AgileAgile
Agile
 
Scrum
ScrumScrum
Scrum
 
Scrum Adoption in an Academic Distributed Environment
Scrum Adoption in an Academic Distributed EnvironmentScrum Adoption in an Academic Distributed Environment
Scrum Adoption in an Academic Distributed Environment
 
Utilizando o Padrão Presentation Model em Aplicações Flex
Utilizando o Padrão Presentation Model em Aplicações FlexUtilizando o Padrão Presentation Model em Aplicações Flex
Utilizando o Padrão Presentation Model em Aplicações Flex
 
Desmistificando o cairngorm
Desmistificando o cairngormDesmistificando o cairngorm
Desmistificando o cairngorm
 
FireScrum - Ontem, Hoje e o Futuro
FireScrum - Ontem, Hoje e o FuturoFireScrum - Ontem, Hoje e o Futuro
FireScrum - Ontem, Hoje e o Futuro
 
FireScrum Agiles2009
FireScrum Agiles2009FireScrum Agiles2009
FireScrum Agiles2009
 
FireScrum
FireScrumFireScrum
FireScrum
 

Titanium Framework Guide

  • 1. TITANIUM Eric Cavalcanti ecavalcanti@gmail.com @ericoc
  • 2. Apoiada pela Storm Ventures, Sierra Ventures e eBay. Appcelerator Inc. foi fundada em 2006 por especialista em desenvolvimento web.
  • 3. O QUE É O TITANIUM? Titanium é um framework open source para construir aplicações móveis (ou desktop) nativas usando tecnologias web abertas (JavaScript - opcionalmente HTML e CSS)
  • 4. POR QUE NATIVA? O usuário já está acostumado em utilizar aplicações nativas em seu dispositivo O tempo de resposta de uma UI nativa é menor Aumentamos consideravelmente a probabilidade de aprovação por lojas mais criteriosas
  • 5. PLATAFORMA SUPORTADAS Desktop Win 32 Mac OS X (Intel) Linux Mobile iPhone/iPod (3.1 ou mais recente) Android (1.6 ou mais recente) iPad BlackBerry
  • 6. LICENÇA SDKs e Titanium Studio – open source e free Licença Apache 2.0 Serviços comerciais de treinamento e suporte Outros serviços comerciais como o Analytics
  • 7.
  • 8.
  • 9.
  • 10. QUEM USA? ... e mais
  • 13. FUNDAMENTOS Uma aplicação Titanium é um programa JavaScript que é interpretado em tempo de execução no dispositivo Não roda dentro de um browser Webkit JavaScriptCore no iOS Rhino no Android / BlackBerry (em breve V8 no Android)
  • 14. CROSS-PLATFORM Cross-platform != “Write Once, Run Everywhere” 100% de reuso de código não visual Boa parte do código de UI é reusada, dependendo do design Melhor experiência do usuário em cada plataforma Titanium é “Write Once, Adapt Everywhere”
  • 15. TITANIUM FEATURES Native User Experience Multimedia Native performance + Native UI Camera, video camera, (tables, animations, gestures…etc.) streaming/device audio/video Location-based services Analytics Augmented reality, geo-location, Custom analytics baked into every compass, native maps application, track usage patterns and adoption Social sharing Titanium+Plus Authenticated access to Facebook, Encrypted database, ecommerce, Twitter, Yahoo YQL. ads, barcode scanners, custom Native email/address book analytics, in-app purchase Data Development tools Local SQLite data store, web Create, test, and publish your app services, lightweight key/value using the same tools across store platforms
  • 16. OPEN MOBILE MARKETPLACE http://marketplace.appcelerator.com
  • 17. PRÉ-REQUISITOS Mac OS X 10.6 (Snow Leopard) ou 10.7 (Lion) Windows XP (todas edições, exceto Starter Edition) Windows 7 Ubuntu Linux 10.04 iOS SDK Android SDK
  • 18. TITANIUM STUDIO E SDKS Titanium Studio é uma IDE baseada no eclipse que interage com vários scripts Python contidos no Titanium SDK Os scripts interagem com as ferramentas nativas de cada plataforma
  • 19. CRIANDO UM NOVO PROJETO
  • 21. RESOURCES ESPECÍFICOS DE CADA PLATAFORMA Subpastas da pasta Resources android iphone
  • 22. RECURSOS ESPECÍFICOS DE CADA PLATAFORMA Android: intents, background services, hardware menu button iOS: routes in map, pre-built animations, custom fonts, Cocoa UI APIs específicas de cada plataforma são implementadas em namespace específicos para a plataforma. Ex. Titanium.Android.Menu
  • 23. EXECUTANDO CÓDIGO ESPECÍFICO PARA UMA PLATAFORMA if (Ti.Platform.osname == "iphone") { ... } else { ... }
  • 24. TIPOS DE APLICAÇÕES Tab Group Single Window Window Stack
  • 25. PARA DESENVOLVEDORES WEB... Uma “window” seria similar a uma “página” Uma “view” seria similar a uma “div” O namespace TI.UI fornece vários componentes visuais (buttons, text field, pickers, maps, scroll views)
  • 27. TABLEVIEW   var win1 = Titanium.UI.createWindow({ " backgroundColor:"#fff" }); var dados = [ " " {title:"Row 1 - simple row"}, " " {title:"Row 2 - with child", hasChild:true}, " " {title:"Row 3 - with detail", hasDetail:true}, " " {title:"Row 4 - with check", hasCheck:true}, " " {title:"Row 5 - red background", backgroundColor:"#f00"} " ];"   var table1 = Titanium.UI.createTableView({ " data:dados });   win1.add(table1); win1.open();
  • 28. TABELAS AGRUPADAS var table1 = Titanium.UI.createTableView({ " style:Titanium.UI.iPhone.TableViewStyle.GROUPED });   var section1 = Titanium.UI.createTableViewSection(); section1.headerTitle = "Hello"; var row1 = Titanium.UI.createTableViewRow({title:"Hello 1"}); var row2 = Titanium.UI.createTableViewRow({title:"Hello 2"}); section1.add(row1); section1.add(row2);   var section2 = Titanium.UI.createTableViewSection(); section2.headerTitle = "Hello2"; var row3 = Titanium.UI.createTableViewRow({title:"Hello 3"}); var row4 = Titanium.UI.createTableViewRow({title:"Hello 4"}); section2.add(row3); section2.add(row4);   table1.setData([section1,section2]);
  • 29. TABLEVIEW EDITÁVEIS SOMENTE NO IOS // create table view var tableview = Titanium.UI.createTableView({ data:data, editable:true, top:50 }); tableview.editing = true; tableview.editing = false;
  • 30. SCROLLABLEVIEW Permite o scroll horizontal de uma ou mais views através do gesto slider var image1 = Ti.UI.createImageView({ image:'image1.jpg' }); var image2 = Ti.UI.createImageView({ image:'image2.jpg' }); var image3 = Ti.UI.createImageView({ image:'image3.jpg' }); var win = Ti.UI.createWindow({ backgroundColor:'black' }); var scrollView = Ti.UI.createScrollableView({ views:[image1, image2, image3], showPagingControl:true, pagingControlHeight:30 }); win.add(scrollView); win.open();
  • 32. STYLE COM JSS (JAVASCRIPT STYLESHEETS) app.js !"#$%&'()%$*$+&,-.,/#0"102&'()%34$ $$&(56%6$ 789$ !"#$:;11)'$*$+&,-.,/#0"10<;11)'34$ $$&(56:6=$ $$1&1>056?0>>)6$ 789$ !"#$%&'@$*$+&1"'&;A,-.,/#0"102&'()%34/>"BBC"A056%&'<>;06789$ app.jss !"#$# ##%&'()*+,-./'+0+*12*3.24# 5# %,66+-#$# ##"7.6819::;<4# ##837)861=:;<4# 5# >"7-?0,3#$# ##%&'()*+,-./'+0+*12%0,324# 5#
  • 34. BANCO DE DADOS E SISTEMA DE ARQUIVOS
  • 35. DADOS LOCAIS Titanium.App.Properties Ideal para armazenar configurações da aplicação Titanium.Filesystem Utilizado para manipulação do sistema de arquivos Titanium.Database Permite o acesso local a banco de dados SQLite
  • 37. HTTPCLIENT Ti.Network.HTTPClient implementa a especificação XHR (XMLHttpRequest) Familiar para programadores Ajax
  • 39. API DE ÁUDIO Executa arquivo de som local ou remoto (Sound) Suporte a stream de áudio (Audio Player) Suporte a gravação de áudio (no android via intent)
  • 40. EXECUTANDO AUDIO var win = Ti.UI.createWindow({ backgroundColor:'#FFF' }) var sound = Ti.Media.createSound({ url:'music/u2.mp3' }); var button = Ti.UI.createButton({ title:'Play Sound', width:250, height:35 }); button.addEventListener('click', function(e){ sound.play(); }) win.add(button); win.open();
  • 41. API DE VÍDEO Executa arquivos de vídeo local Suporte a stream de vídeo (somente no iOS) Suporte a captura de vídeo (no android via intent)
  • 42. EXECUTANDO VÍDEO var win = Ti.UI.createWindow({ backgroundColor:'#000' }); var video = Ti.Media.createVideoPlayer({ url:'video/movie.mp4', backgroundColor:'#000' }); // No android você não adiciona o video player na window if (Ti.Platform.osname != 'android') { win.add(video); } win.open(); video.play();
  • 43. CÂMERA Interagir com a câmera embutida do Android ou IPhone
  • 44. CAPTURANDO UMA FOTO Ti.Media.showCamera({ success:function(e) { var image = e.media; imgPhoto.image = image; }, cancel:function() {}, error:function(e) { alert.(e.code); }, mediaTypes:[Ti.Media.MEDIA_TYPE_PHOTO] });
  • 46. UTILIZANDO A GEOLOCALIZAÇÃO Ti.Geolocation.getCurrentPosition(function(e){ if (e.error) { alert('Erro :' + e.error.message); return; } Ti.API.info('Latitude: ' + e.coords.latitude); Ti.API.info('Longitude: ' + e.coords.longitude); });
  • 47. UTILIZANDO MAPAS var mountainView = Ti.Map.createAnnotation({ latitude:37.390749, longitude:-122.081651, title:'Appcelerator Headquarters', subtitle:'Mountain View, CA', pincolor:Ti.Map.ANNOTATION_RED, animate:true }); var mapView = Ti.Map.createView({ mapType:Ti.Map.STANDARD_TYPE, region: {latitude:37.390749, longitude:-122.081651, latitudeDelta:0.01, longitudeDelta:0.01}, animate:true, regionFit:true, annotations:[mountainView] }); win.add(mapView);
  • 49. UTILIZANDO O ACELERÔMETRO Titanium.Accelerometer.addEventListener('update',function(e) { Ti.API.debug("accelerometer - x:"+e.x+",y:"+e.y+",z:"+e.z); });
  • 54. COMMUNITY QUESTIONS & ANSWERS http://developer.appcelerator.com/questions
  • 55. APPCELERATOR VIDEO CHANNEL http://vimeo.com/appcelerator
  • 57.
  • 58. OBRIGADO! Eric Cavalcanti ecavalcanti@gmail.com @ericoc