2011/08/08からのアクセス回数 8065
Android SDKをインストールする前に作成したTitaniumのプロジェクトは、 Resoruceファイル以下をバックアップして、作り直す必要があります。
TitaniumのAPIでデバイス依存するもの(「iOSのみ」と表記)を使用した場合、注意が必要です。 特に
には、個別に対応する必要があります。
iPhoneでよく使われるナビゲーションバーの左右のボタンは、Androidではメニューで代用するため、 実装がことなります。
そこで、以下のnavigation.jsファイルにデバイスの違いを吸収するコードをまとめました。
var Navigation = function() { this.setup = function(nav) { if (Ti.Platform.osname === 'android') { var android = nav.android; var activitiy = Ti.Android.currentActivity; if (activitiy) { activitiy.onCreateOptionsMenu = function(e) { var menu = e.menu; if (android.leftButton) { var leftMenuItem = menu.add(android.leftButton); leftMenuItem.setIcon(android.leftButton.icon); leftMenuItem.addEventListener('click', android.leftButton.callback); } if (android.rightButton) { var rightMenuItem = menu.add(android.rightButton); rightMenuItem.setIcon(android.icon); rightMenuItem.addEventListener('click', android.rightButton.callback); } }; } } else { var win = Ti.UI.currentWindow; var iPhone = nav.iPhone; if (iPhone.leftButton) { var leftButton = Ti.UI.createButton(iPhone.leftButton); leftButton.addEventListener('click', iPhone.leftButton.callback); win.leftNavButton = leftButton; } if (iPhone.rightButton) { var rightButton = Ti.UI.createButton(iPhone.rightButton); rightButton.addEventListener('click', iPhone.rightButton.callback); win.rightNavButton = rightButton; } } }; };
使用する場合には、各ボタンのコールバック関数を別途定義し、以下のように使用します。
table_view.jsへの変更
var addCallback = function(e) { var at = new Date(); var recordWindow = Ti.UI.createWindow({ url: 'record_window.js', record: {weight:'', at: at.toDateString()}, func: 'insert_row', backgroundColor:'#fff' }); Ti.UI.currentTab.open(recordWindow); }; var grpahCallback = function(e) { if (records.length > 0) { var weights = "["; var ticks = "["; for (i = records.length-1; i >= 0; i--) { var at = new Date(records[i].at); weights = weights + "[" + at.getTime() +","+records[i].weight+"],"; ticks = ticks + at.getTime() + ","; } weights = weights + "]"; ticks = ticks + "]"; var graphWindow = Ti.UI.createWindow({ url: 'plot_window.js', weights: weights, ticks: ticks } ); Ti.UI.currentTab.open(graphWindow); } }; var navi = new Navigation(); navi.setup({ iPhone: { leftButton: {title: 'Graph', callback: grpahCallback}, rightButton: {systemButton: Titanium.UI.iPhone.SystemButton.ADD, callback : addCallback} }, android: { leftButton: {title: 'Graph', icon: 'dark_stats-bars.png', callback: grpahCallback}, rightButton: {title: 'Add', icon: 'dark_add.png', callback : addCallback} } });
setup関数で、iPhone、androidで使用するボタンのタイトル、アイコン、コールバック関数をセットするだけです。
皆様のご意見、ご希望をお待ちしております。