




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JavaScriptでネイティブiPhone/Androidアプリを作るグリー株式會(huì)社伊藤直也自己紹介伊藤直也(33)グリー株式會(huì)ソーシャルメディア統(tǒng)括部長(zhǎng)プロデューサーiPhone/Android等やってますアジェンダiPhone/AndroidアプリをJavaScriptで作る普通のiPhone/Android開発の觸りTitaniumMobileでJavaScriptでアプリ開発※JavaScript+iPhone/Androidと言ってもHTML5+JavaScriptなWebアプリケーションの話はありませんスマートフォン開発iPhone(iOS)Android普通のiPhoneアプリ開発iOSSDK+Xcode,Objective-CInterfaceBuilderGUIでレイアウト→コード中のアクション紐付け結(jié)局Objective-Cで書くことも普通のAndroidアプリ開発AndroidSDK+Eclipse,Java(GUIBuilderはそこまで使われていない?)iPhone/Androidアプリで作るもの主にUIとデバイス連攜部分「クラウド端末」の性格を活かしてドメインロジックはサーバーで。アプリで表示デバイスの機(jī)能にアクセスしたいときはコアAPIでiPhoneアプリのコード-(void)applicationdidFinishLaunching:(UIApplication*)application{CGRectrect=[windowframe];UILabel*label=[[UILabelalloc]initWithFrame:rect];label.text=@"Hello,world!";[window
addSubview:label];[labelrelease];[windowmakeKeyAndVisible];}"Window"に"View"(ラベルやボタン)を置くObjective-CでSDK提供のクラスのAPIを呼ぶAndroidアプリのコード"View"で組み立てる(概念はiPhoneと似ている)JavaでSDKのAPIを呼んで組み立て(XMLでも書ける)publicclassHelloWorldextendsActivity{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);
setContentView(newHelloView(this));}}publicclassHelloViewextendsView{@OverrideprotectedvoidonDraw(Canvascanvas){canvas.drawText("HelloWorld!",0,12,newPaint());}}iPhone/AndroidネイイティブブアプリリP(guān)ros速くて快快適なイインタフフェーススを構(gòu)築築できるるデバイススの機(jī)能能をフルルに活かかせるConsコード量量が多いい、工數(shù)數(shù)がかかかるObjective-C????メメモリリ管理:(iPhone/Androidそそのほかかマルチチプラッットフォォームににどう対対応するるか問題題Objective-C/Java両方方覚えるるの大変変/両両プララットフフォームムのアーーキテククチャにに慣れるるの大変変AppceleratorTitaniumMobileJavaScriptでiPhone/Android/BlackBerryアアプリがが書けるる開発環(huán)環(huán)境JavaScriptなののにネイイティブブアプリリ????「な、、なんだだってーー!」フリー、、オーププンソーース(有料版版あり)Hello,Titaniumvarwin=Titanium.UI.createWindow({backgroundColor:'#fff',title:'FirstApp'});varlabel=Titanium.UI.createLabel({text:'Hello,Titanium!',textAlign:'center',height:20,font:{fontSize:20,fontWeight:'bold'}});win.add(label);win.open();ビルドド結(jié)果果Titaniumでで開開発JavaScript書書く→→ビビルルドすする→→シシミミュレレータタで確確認(rèn)→→JavaScript書書く?????TitaniumSDKははbuilderののみみ。IDEなししEmacs+j2-mode.elででモモリモモリ書書いててますすTitaniumMobile開開発ののはじじめ方方プロジジェククト作作る→→Resources/app.js編編集→→TitaniumDeveloperででビルルドWindowににViewをを載せせるモモデルルは変変わららずTitaniumisNativeネイテティブブだけけどJavaScript、、JavaScriptだけけどネネイテティブブUIは速速い??爝m適setTimeout()、、JSON.parse()など普普通に呼べべるTitanium.include('../js/jquery.js')ななども可能能HowdoesTitaniumMobilework?/questions/2444001/how-does-appcelerator-titanium-mobile-workJavaScriptをププリプロセセッサがTitaniumAPIをシンンボルマッップにプリリコンパイイルiPhone????.oにコンンパイルAndroid????.classにココンパイルルあとはSDKががネイティィブバイナナリにしててくれる具體例をみみていく/*最初初の畫面(window)*/varfirst=Ti.UI.createWindow({title:'FirstWindow',backgroundColor:'#fff'});varbutton=Ti.UI.createButton({style:Ti.UI.iPhone.SystemButtonStyle.BORDERED,title:'touch!',font:{fontSize:16,fontWeight:'bold'},height:30,width:100});first.add(button);/*次のの畫面(window)*/varsecond=Ti.UI.createWindow({title:'SecondWindow',backgroundColor:'#fff'});varimage=Ti.UI.createImageView({image:'/4008/4196452707_485b66a9a3_m.jpg'});second.add(image);/*二つつの畫面をを繋ぐwindow+navigationGroup*/varbase=Ti.UI.createWindow();varnav=Ti.UI.iPhone.createNavigationGroup({window:first});base.add(nav);base.open();/*ボタタンにイベベントを登登録*/button.addEventListener('click',function(){nav.open(second);});UI実裝裝の進(jìn)め方方Ti.UI.createWindow()ややTi.UI.createButton()ででWindowややViewとといいっったたパパーーツツをを作作るるwindow.add(button)ななどどででくくっっつつけけるるフォォンントトのの大大ききささななどどははCSSののよよううにに指指定定動(dòng)ききがが必必要要なな箇箇所所ははaddEventListener()ででイイベベンントトハハンンドドララをを登登録録いかかににももJavaScriptでききああががっっっったたアアププリリのの使使用用感感(実実機(jī)機(jī)でではは觸觸れれてていいまませせんんがが)ちちゃゃんんととネネイイテティィブブ期待待通通りり、、ぬぬるるりりとと動(dòng)動(dòng)くくJavaScriptだだかからら、、とといいうう妥妥協(xié)協(xié)ししたた動(dòng)動(dòng)ききににははななららなないいこんんななののもも作作れれまますすCoverFlowViewvarwin=Ti.UI.currentWindow;varview=Ti.UI.createCoverFlowView({images:['../images/01.jpg','../images/02.jpg','../images/03.jpg','../images/04.jpg','../images/05.jpg'],backgroundColor:'#000'});win.add(view);ネットワークク呼び出しははXHR同様様varhttp=Titanium.Network.createHTTPClient();http.open('GET','/search.json?q=%23titanium');http.onload=function(){data=JSON.parse(this.responseText);};http.send();/*TCPSocketやBonjourServiceななどもありまます*/デバイスの機(jī)機(jī)能もばっちちりTitanium.Geolocationvarmapview=Ti.Map.createView({mapType:Ti.Map.STANDARD_TYPE,animate:true,regionFit:true,userLocation:true});(function(e){mapview.setLocation({latitude:e.coords.latitude,longitude:e.coords.longitude,latitudeDelta:0.01,longitudeDelta:0.0,animate:true});}TitaniumAPIいいろいろろTi.Geolocation.getCurrentPosition()Ti.Media.showCamera()Ti.Media.createVideoPlayer()Ti.DataBase.open()Ti.App.Properties.setString()Ti.FileSystem.getFile()Ti.Network.createHTTPClient()Ti.Gesture.addEventListener('shake',...)Ti.Facebook.publishStream()Ti.UI.iPhone.appBadge=20...TitaniumAPIざざっくくり基本的ななUIはほほぼサポポート(と思いいます)CoverFlow、、地図、、WebViewももありカメラ,位置情情報(bào),加加速度セセンサななどハーードウェェアアククセスOKデータははsqlite、Propertiesに保保存可能能FacebookややYQLをを扱うAPIなどどもあるるAPIはは拡張張モジュュールをを書くとと自分でで追加でできる(っぽぽい)作ったももの(1):FlickrViewerFlickrののJSONをScrollableViewで表表示するるだけででOKコードはは100行未満満(/SimpleFlickr)左右フリリックでで寫真がが切り替替わりまます/*FlickrかからHTTPClientででJSONととっててきて????*/varwin=Titanium.UI.currentWindow;varloader=Titanium.Network.createHTTPClient();loader.open('GET',this.url);loader.onload=function(){Ti.API.info(this.responseText);vardata=JSON.parse(this.responseText);win.add(Flickr.createPhotoView(data));};loader.send()/*ImageView作作っててScrollabeViewにに流しし込む?????*/varviews=data.items.map(function(item){???varimageView=Titanium.UI.createImageView({image:item.media.m,???});baseView.add(imageView);baseView.add(title);baseView.add(date);returnbaseView;});varscrollable=Titanium.UI.createScrollableView({views:views
});全く同じじコードドでAndroidアアプリ作ったももの(2):RSSリーダダーPerlサーババでRSS→→JSON,HTTPClientでアアクセススFacebookConnect,ははてなブブックママーク連連攜機(jī)能能も250行行くらいい(/naoya/RSSV)ここはWebViewvarloader=Ti.Network.createHTTPClient();/*ロローカルルに立ててたサーーバーががRSSをJSONにに変換ししてくれれるのでで、それれを取得得*/loader.open('GET','http://localhost:3000/feed?url='+row.url);loader.onload=function(){vardata=JSON.parse(this.responseText);/*読読み取っったJSONをTableViewで整整形*/vartable=Titanium.UI.createTableView({data:data.map(createItemRow)});win.add(table);/*TableViewががクリリックさされたららWebViewでで開くく*/table.addEventListener('click',function(e){openWebWindow(data[e.index]);});};雑感など典型的なiPhoneアプリななら十分開発発できるGUIプロググラミングととJavaScriptのイベントトドリブンススタイルの相相性が良いマルチプラッットフォームムとは言え、、if文でのの切り分けははそれなりにに必要UIパーツツの違い、解解像度の違いいさすがに動(dòng)ききのあるゲーームはちょっっと難しい?(いえ、わわかりませせん)そのほかAppStore申申請(qǐng)はOKららしい過去に話題題に上ったたことはああるそうビルド後ののファイルルに.xcodeprojがあるるので、Xcodeから読読み込んででいじるこことができきるXib2Jsを使使うとInterfaceBuilderでで作ったたモックををJavaScriptにに変換でできるTitaniumAPIででできなないことはは、Objective-CやJavaでで拡張モモジュールルを書いててしまえばば良い?Titaniumでで開発してていくにはは@donayamaさん日本本語wikiは必見見PDF印印刷して一一通り読めめば大まかかなところろはすぐわわかるサンプルががあって公公式ドキュュメントよより親切公式ドキュュメントよより、KitchenSinkをを見ようオフィシャャルのカタタログ実裝裝エミュレーータで動(dòng)かかす→ややりたいいこと見つつける→→gitgrep→ココード見見るAPIリリファレンンスは/mobile/latest/ににSDocああり(by@masuidrive)公式のよりり検索しややすいご清聴ありりがとうごございましした【PR】採用してまます!google:GREE+採採用iPhone/Androidプロジジェクト、、ありますす9、靜夜夜四無無鄰,,荒居居舊業(yè)業(yè)貧。。。1月-231月-23Friday,January6,202310、雨中黃葉葉樹,燈下下白頭人。。。01:24:2701:24:2701:241/6/20231:24:27AM11、以我我獨(dú)沈沈久,,愧君君相見見頻。。。1月-2301:24:2701:24Jan-2306-Jan-2312、故故人人江江海海別別,,幾幾度度隔隔山山川川。。。。01:24:2801:24:2801:24Friday,January6,202313、乍見翻疑夢(mèng)夢(mèng),相悲各問問年。。1月-231月-2301:24:2801:24:28January6,202314、他鄉(xiāng)生白白發(fā),舊國國見青山。。。06一月月20231:24:28上上午01:24:281月-2315、比不了了得就不不比,得得不到的的就不要要。。。一月231:24上午午1月-2301:24January6,202316、行動(dòng)出出成果,,工作出出財(cái)富。。。2023/1/61:24:2801:24:2806January202317、做前,能能夠環(huán)視四四周;做時(shí)時(shí),你只能能或者最好好沿著以腳腳為起點(diǎn)的的射線向前前。。1:24:28上上午1:24上上午01:24:281月-239、沒有失敗,,只有暫時(shí)停停止成功!。。1月-231月-23Friday,January6,202310、很多多事情情努力力了未未必有有結(jié)果果,但但是不不努力力卻什什么改改變也也沒有有。。。01:24:2801:24:2801:241/6/20231:24:28AM11、成功就就是日復(fù)復(fù)一日那那一點(diǎn)點(diǎn)點(diǎn)小小努努力的積積累。。。1月-2301:24:2801:24Jan-2306-Jan-2312、世間成成事,不不求其絕絕對(duì)圓滿滿,留一一份不足足,可得得無限完完美。。。01:24:2801:24:2801:24Friday,January6,202313、不知香積積寺,數(shù)里里入云峰。。。1月-231月-2301:24:2801:24:28January6,202314、意志堅(jiān)堅(jiān)強(qiáng)的人人能把世世界放在在手中像像泥塊一一樣任意意揉捏。。06一一月20231:24:28上午午01:24:281月-2315、楚塞三湘湘接,荊門門九派通。。。。一月231:24上上午1月-2301:24January6,202316、少年十十五二十十時(shí),步步行奪得得胡馬騎騎。。2023/1/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國FM自動(dòng)選臺(tái)收音機(jī)望遠(yuǎn)鏡數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國BOPP鍍鋁膜數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國2、5-二甲基苯胺數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 2025至2030年中國集中操作式電梯井筒模市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國鋁合金吸頂燈市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國茴香粉市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國砼攪拌站市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國電力控制開關(guān)柜市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國深溝外球面球軸承市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國汽車儲(chǔ)液器支架市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 初三勵(lì)志主題班會(huì):初三第一次班會(huì)幻燈片PPT
- GB/T 42910-2023無機(jī)膠粘劑高溫壓縮剪切強(qiáng)度試驗(yàn)方法
- 2022年江蘇省射陽中等專業(yè)學(xué)校招聘考試真題及答案
- 給攪拌站送石子合同范本
- 2023年副主任醫(yī)師(副高)-學(xué)校衛(wèi)生與兒少衛(wèi)生(副高)考試歷年真題集錦帶答案
- 法律基礎(chǔ)(第4版)PPT完整全套教學(xué)課件
- 倉管應(yīng)聘求職簡(jiǎn)歷表格
- 五年級(jí)下冊(cè)語文期末考試學(xué)霸奪冠解密卷人教部編版含答案
- 房屋加固工程監(jiān)理規(guī)劃
- 一級(jí)煙草專賣管理師理論考試題庫(含答案)
- von frey絲K值表完整版
評(píng)論
0/150
提交評(píng)論