- 追加された行はこの色です。
- 削除された行はこの色です。
[[FrontPage]]
#contents
2011/08/08からのアクセス回数 &counter;
** Projectファイルの再作成 [#ef518133]
Android SDKをインストールする前に作成したTitaniumのプロジェクトは、
Resoruceファイル以下をバックアップして、作り直す必要があります。
** iPhoneとAndroidの違い [#t153348e]
TitaniumのAPIでデバイス依存するもの(「iOSのみ」と表記)を使用した場合、注意が必要です。
特に
- NavigationGroup
- TableViewRowの削除等のSwipeイベントに対応する機能
- HTTPClient(実装が全く異なるためiPhoneとAndroidでの動作確認が必要)
には、個別に対応する必要があります。
*** NavigationGroupの対応 [#ree50459]
iPhoneでよく使われるナビゲーションバーの左右のボタンは、Androidではメニューで代用するため、
実装がことなります。
そこで、以下のnavigation.jsファイルにデバイスの違いを吸収するコードをまとめました。
#pre{{
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への変更
#pre{{
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で使用するボタンのタイトル、アイコン、コールバック関数をセットするだけです。
** コメント [#i2644573]
#vote(おもしろかった,そうでもない,わかりずらい)
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha