版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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開(kāi)発の觸りTitaniumMobileでJavaScriptでアプリ開(kāi)発※JavaScript+iPhone/Androidと言ってもHTML5+JavaScriptなWebアプリケーションの話(huà)はありませんスマートフォン開(kāi)発iPhone(iOS)Android普通のiPhoneアプリ開(kāi)発iOSSDK+Xcode,Objective-CInterfaceBuilderGUIでレイアウト→コード中のアクション紐付け結(jié)局Objective-Cで書(shū)くことも普通のAndroidアプリ開(kāi)発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でも書(shū)ける)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そそのほかかマルチチプラッットフォォームににどう対対応するるか問(wèn)題題Objective-C/Java両方方覚えるるの大変変/両両プララットフフォームムのアーーキテククチャにに慣れるるの大変変AppceleratorTitaniumMobileJavaScriptでiPhone/Android/BlackBerryアアプリがが書(shū)けるる開(kāi)発環(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でで開(kāi)開(kāi)発JavaScript書(shū)書(shū)く→→ビビルルドすする→→シシミミュレレータタで確確認(rèn)→→JavaScript書(shū)書(shū)く?????TitaniumSDKははbuilderののみみ。IDEなししEmacs+j2-mode.elででモモリモモリ書(shū)書(shū)いててますすTitaniumMobile開(kāi)開(kāi)発ののはじじめ方方プロジジェククト作作る→→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ががネイティィブバイナナリにしててくれる具體例をみみていく/*最初初の畫(huà)面(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);/*次のの畫(huà)面(window)*/varsecond=Ti.UI.createWindow({title:'SecondWindow',backgroundColor:'#fff'});varimage=Ti.UI.createImageView({image:'/4008/4196452707_485b66a9a3_m.jpg'});second.add(image);/*二つつの畫(huà)面をを繋ぐ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はは拡張張モジュュールをを書(shū)くとと自分でで追加でできる(っぽぽい)作ったももの(1):FlickrViewerFlickrののJSONをScrollableViewで表表示するるだけででOKコードはは100行未満満(/SimpleFlickr)左右フリリックでで寫(xiě)真がが切り替替わりまます/*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でで開(kāi)くく*/table.addEventListener('click',function(e){openWebWindow(data[e.index]);});};雑感など典型的なiPhoneアプリななら十分開(kāi)発発できるGUIプロググラミングととJavaScriptのイベントトドリブンススタイルの相相性が良いマルチプラッットフォームムとは言え、、if文でのの切り分けははそれなりにに必要UIパーツツの違い、解解像度の違いいさすがに動(dòng)ききのあるゲーームはちょっっと難しい?(いえ、わわかりませせん)そのほかAppStore申申請(qǐng)はOKららしい過(guò)去に話(huà)題題に上ったたことはああるそうビルド後ののファイルルに.xcodeprojがあるるので、Xcodeから読読み込んででいじるこことができきるXib2Jsを使使うとInterfaceBuilderでで作ったたモックををJavaScriptにに変換でできるTitaniumAPIででできなないことはは、Objective-CやJavaでで拡張モモジュールルを書(shū)いててしまえばば良い?Titaniumでで開(kāi)発してていくにはは@donayamaさん日本本語(yǔ)wikiは必見(jiàn)見(jiàn)PDF印印刷して一一通り読めめば大まかかなところろはすぐわわかるサンプルががあって公公式ドキュュメントよより親切公式ドキュュメントよより、KitchenSinkをを見(jiàn)ようオフィシャャルのカタタログ実裝裝エミュレーータで動(dòng)かかす→ややりたいいこと見(jiàn)つつける→→gitgrep→ココード見(jiàn)見(jiàn)るAPIリリファレンンスは/mobile/latest/ににSDocああり(by@masuidrive)公式のよりり検索しややすいご清聴ありりがとうごございましした【PR】採(cǎi)用してまます!google:GREE+採(cǎi)採(cǎi)用iPhone/Androidプロジジェクト、、ありますす9、靜夜夜四無(wú)無(wú)鄰,,荒居居舊業(yè)業(yè)貧。。。1月-231月-23Friday,January6,202310、雨中黃葉葉樹(shù),燈下下白頭人。。。01:24:2701:24:2701:241/6/20231:24:27AM11、以我我獨(dú)沈沈久,,愧君君相見(jiàn)見(jiàn)頻。。。1月-2301:24:2701:24Jan-2306-Jan-2312、故故人人江江海海別別,,幾幾度度隔隔山山川川。。。。01:24:2801:24:2801:24Friday,January6,202313、乍見(jiàn)翻疑夢(mèng)夢(mèng),相悲各問(wèn)問(wèn)年。。1月-231月-2301:24:2801:24:28January6,202314、他鄉(xiāng)生白白發(fā),舊國(guó)國(guó)見(jiàn)青山。。。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)的的射線(xiàn)向前前。。1:24:28上上午1:24上上午01:24:281月-239、沒(méi)有失敗,,只有暫時(shí)停停止成功!。。1月-231月-23Friday,January6,202310、很多多事情情努力力了未未必有有結(jié)果果,但但是不不努力力卻什什么改改變也也沒(méi)有有。。。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ì)圓滿(mǎn)滿(mǎn),留一一份不足足,可得得無(wú)限完完美。。。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、楚塞三湘湘接,荊門(mén)門(mén)九派通。。。。一月231:24上上午1月-2301:24January6,202316、少年十十五二十十時(shí),步步行奪得得胡馬騎騎。。2023/1/
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版小額貸款合同書(shū)
- 2024校車(chē)租賃合同附帶學(xué)生接送時(shí)間表及保險(xiǎn)條款3篇
- 2024版借款人合同范本
- 2024版山場(chǎng)承包的合同
- 2024水電安裝工程設(shè)計(jì)與施工總承包合同集3篇
- 2022年中考化學(xué)人教版一輪復(fù)習(xí)訓(xùn)練:工藝流程題
- 2023-2024年護(hù)師類(lèi)之護(hù)士資格證押題練習(xí)試題A卷(含答案)
- 2024版企業(yè)機(jī)密資料保護(hù)中英協(xié)議范本版B版
- 2022中考生物復(fù)習(xí)訓(xùn)練:細(xì)菌和真菌(含解析)
- 2024年版:個(gè)人保單抵押借款協(xié)議
- 信息系統(tǒng)運(yùn)維服務(wù)方案
- 簡(jiǎn)支梁、懸臂梁撓度計(jì)算程序(自動(dòng)版)
- 沛縣生活垃圾焚燒發(fā)電項(xiàng)目二期工程 環(huán)境影響報(bào)告書(shū) 報(bào)批稿
- DB44∕T 2149-2018 森林資源規(guī)劃設(shè)計(jì)調(diào)查技術(shù)規(guī)程
- 商業(yè)定價(jià)表(含各商鋪價(jià)格測(cè)算銷(xiāo)售回款)
- 【化學(xué)】重慶市2021-2022學(xué)年高一上學(xué)期期末聯(lián)合檢測(cè)試題
- 化學(xué)工業(yè)有毒有害作業(yè)工種范圍表
- 統(tǒng)編版小學(xué)四年級(jí)語(yǔ)文上冊(cè)五六單元測(cè)試卷(附答案)
- 商票保貼協(xié)議
- 高支模技術(shù)交底(新版)
- 電動(dòng)力學(xué)答案完整
評(píng)論
0/150
提交評(píng)論