2015年4月26日日曜日

Titanium Studioでのグローバル関数/変数と画面サイズに応じたTSSファイルの調整

Titanium Studioでalloyを利用する場合、app/alloy.jsにグローバル関数/変数を設定することができます。

//app/alloy.js

//Global Functions
Alloy.Globals.closeWindow = function(windowName) {
    if(windowName in windowList){
        windowList[windowName].close();
        windowList[windowName] = null;
        delete windowList[windowName];
    }
};


//Gloval Variables
Alloy.CFG.messageFontSize = 20;
Alloy.CFG.buttonFontSize = 25;

上記のように設定し、他のファイルで普通にAlloy.Globals.closeWindow(win)等のように呼び出せば利用できます。
また、tssファイル内で計算は行えませんが、alloy.jsファイル内で設定した値は利用することができます。
そのため、下記のように画面サイズに応じて設定する値を変更すれば、1つのtssファイルで複数の画像サイズに対応できます。

//app/alloy.js

//Gloval Variables

Alloy.CFG.messageFontSize = 20;
Alloy.CFG.buttonFontSize = 25;

if(Ti.Android) {
    Ti.API.info(Ti.Platform.displayCaps.dpi);
    switch(Ti.Platform.displayCaps.dpi) {
        case 120:
            Alloy.CFG.messageFontSize = 18;
            Alloy.CFG.buttonFontSize = 20;
            break;
        case 160:
            Alloy.CFG.messageFontSize = 18;
            Alloy.CFG.buttonFontSize = 20;
            break;
        case 240:
            Alloy.CFG.messageFontSize = 18;
            Alloy.CFG.buttonFontSize = 20;
            break;
        case 320:
            //Default
            break;
     case 480:
            break;
    }
}

2015年4月12日日曜日

Titanium StudioでHTTPClientを利用

Titanium StudioでHTTPClientを作成する方法に関するメモです。
生成時にまとめて引数を指定する方法もありますが、私はだいたい生成した後に設定を入れています。

var client = Titanium.Network.createHTTPClient();
client.open('POST',"http://example.com/"); //POST or GET
client.onload = function(){
    json = JSON.parse(this.responseText);
    Ti.API.info(this.responseText);
    client.onload=null;
    client.onerror=null;
    client=null;
};
client.onerror = function(error){
    Ti.API.info(error.status);
    client.onload=null;
    client.onerror=null;
    client=null;
};
var params = {data : "test data"}; 
client.send(params);

まず「Titanium.Network.createHTTPClient」でHTTPClientを生成した後、「open」でアクセスするURLとメソッド(普通はGETかPOST)を指定します。
「onload」と「onerror」はアクセス成功時と失敗時に実行する関数を指定しています。 「onload」では「this.responseText」でアクセスしたURLの中身にアクセスできます。
また、どちらも最後にclient.onload、client.onerror、clientにnullを代入しています。これは、こうしないとメモリが解放されず、メモリリークを起こすと言う話を聞いたので、お呪いとして入れてあります。正確な検証は行っていません。
最後に、POSTの場合はPOSTで送信するデータを生成して、「send」で送信しています。

2015年4月10日金曜日

Titanium StudioのAction Bar

http://qiita.com/s4shiki/items/a1006fdd38fba29cd8d3でAction Barの消し方について2種類記載されている。

1つは「win.activity.actionBar.hide();」を利用する方法で、もう1つはカスタムテーマを利用する方法なのだが、「win.activity.actionBar.hide();」を利用する方法では画面を開いた瞬間はAction Barが表示されてしまうので、カスタムテーマを利用した方が良いようだ。