【转】利用Titanium实现外汇兑换计算的ios代码

【原文】http://chuangyiji.com/2011/12/titanium-ios-android-exchange-code/

在帮公司的app写库函数和教程的时候,做了这个代码片段,titanium mobile还是很优雅的,主要的代码不过几十行,就实现了在ios设备下的外汇兑换计算功能,用户可以选择需要兑换的货币种类,然后输入金额,通过查询汇率就能完成计算。

目前来说,titanium mobile的弱项在于界面,所以我尽可能的要简化界面代码,好在ios设备的主要界面方式还是比较固定的,比如tableview,因此可以封装一些细节代码,使得前端的业务逻辑代码尽量简化。

【转】利用Titanium实现外汇兑换计算的ios代码
            
    
    博客分类: Titanium appceleratortitaniummobilesample 

【转】利用Titanium实现外汇兑换计算的ios代码
            
    
    博客分类: Titanium appceleratortitaniummobilesample 

var my = {};
my.money = 0;
my.data = [];
//货币数组
my.currency = ['人民币', '美元', '港币', '澳元', '加元', '欧元', '日元', '韩元', '新西兰元', '台币'];
//货币对应代码数组
my.cur_sc = ['CNY', 'USD', 'HKD', 'AUD', 'CAD', 'EUR', 'JPY', 'KRW', 'NZD', 'TWD'];
//主窗口
var win = Titanium.UI.currentWindow;
 
win.barColor = 'faa61a';
win.backgroundImage = '../images/bg/back01.jpg';
 
//开始创建主tableview
 
//from 货币 row
row = wing.ui.createTableViewRow({
    type : rowPicker,
    picker_type : pickerSingle,
    picker_data : my.currency,
    title : '基准货币',
    value : my.currency[0],
    buttonOK_title : '确认'
});
 
//2011.12.16.
row.addEventListener('RowChange', function(e) {
    //获得用户选择
    my.from = Titanium.App.Properties.getString('RowPicker');
    Ti.API.info('from:' + my.from);
});
//设定from的初始值
my.from = my.currency[0];
 
my.data[0] = row;
 
//to 货币 row
row = wing.ui.createTableViewRow({
    type : rowPicker,
    picker_type : pickerSingle,
    picker_data : my.currency,
    title : '转换货币',
    value : my.currency[1],
    buttonOK_title : '确认'
});
 
//row 内容修改事件
//2011.12.16.
row.addEventListener('RowChange', function(e) {
    my.to = Titanium.App.Properties.getString('RowPicker');
    Ti.API.info('to:' + my.to);
});
//设定to的初始值
my.to = my.currency[1];
 
my.data[1] = row;
 
//输入金额 row
row = wing.ui.createTableViewRow({
    type : rowText,
    keyboard : keyboardNumbers,
    title : '金额',
    value : '0',
    textAlign : 'right'
});
 
//row 内容修改事件
//2011.12.16.
row.addEventListener('RowChange', function(e) {
    my.money = Titanium.App.Properties.getString('RowText');
});
my.data[2] = row;
 
// tableview object
var tableviewExchange = Titanium.UI.createTableView({
    backgroundColor : 'transparent',
    data : my.data,
    style : Titanium.UI.iPhone.TableViewStyle.GROUPED
});
 
win.add(tableviewExchange);


其中,my是程序用的对象,所有核心变量都属于这个my对象。

如上面图中所示,这些代码完成了初始化的界面,初始的tableview中的核心数据是my.data,它的核心是三行row,因为基于后端的界面对象支持,因此实现界面的代码已经很简洁了,点击货币名称弹出picker选择的所有代码已经都封装了,前端目前要做的还有获得用户选择的值。个人对于js跨脚本传递变量还不太熟悉,因此用了最简单粗暴的方法,直接读写内存临时文件。

然后是那个核心的“计算”按钮了,通过soap协议如何调用外汇接口,在titanium的demo中有,这里就不多解释了。

//计算货币汇率按钮
var btnCalExchange = wing.ui.createButton({
    title : '计算',
    bottom : 20,
    left : 230,
    type : buttonCommon
});
 
//计算汇率
btnCalExchange.addEventListener('click', function(e) {
 
    //#396 外汇,对于金额输入用数字正则进行判断,不对的话进行提示
    //检查金额是否输入合法
    if(isRegExp(regFloat, my.money) == false) {
        ShowInfo('金额输入错误,请重新输入');
    } else {
 
        //soap url
        var url = "http://www.webservicex.net/CurrencyConvertor.asmx";
        //soap参数设置
        var callparams = {
            FromCurrency : my.cur_sc[my.currency.findIndex(my.from)],
            ToCurrency : my.cur_sc[my.currency.findIndex(my.to)]
        };
        Ti.API.info('my from and to:' + my.from + ' ' + my.to);
        Ti.API.info('my from index:' + my.currency.findIndex(my.from));
 
        Ti.API.info(callparams);
 
        //建立soap对象
        var suds = new SudsClient({
            endpoint : url,
            targetNamespace : 'http://www.webserviceX.NET/'
        });
 
        try {
            //调用soap
            suds.invoke('ConversionRate', callparams, function(xmlDoc) {
                var results = xmlDoc.documentElement.getElementsByTagName('ConversionRateResult');
                if(results && results.length > 0) {
                    var result = results.item(0);
                    var r1 = results.item(0).text;
                    Ti.API.info('1 Euro buys you ' + r1 * my.money + ' U.S. Dollars.');
                    //创建结果row
                    row = wing.ui.createTableViewRow({
                        type : rowText,
                        keyboard : keyboardNumbers,
                        title : '结果',
                        value : r1 * my.money,
                        textAlign : 'right',
                        editable : false
                    });
                    my.data[3] = row;
 
                    //创建显示汇率row
                    row = wing.ui.createTableViewRow({
                        type : rowText,
                        keyboard : keyboardNumbers,
                        title : '汇率',
                        value : r1,
                        textAlign : 'right',
                        editable : false
                    });
                    my.data[4] = row;
 
                    //刷新 tableview
                    tableviewExchange.setData(my.data);
 
                } else {
                    Ti.API.info('Oops, could not determine result of SOAP call.');
                }
            });
        } catch(e) {
            Ti.API.error('Error: ' + e);
        }
    }
});
 
win.add(btnCalExchange);


这个计算按钮,首先通过soap协议调用,进行汇率计算,然后将计算结果和汇率再用前面说的row生成方式生成,并入到my.data中后,刷新tableview即可。

涉及到的wing ui对象代码、通用函数库tools和soap协议支持suds没有附上,这些库函数,特别是wing ui还没有整理好,本人对于js和titanium mobile以及iOS、android都是初学,代码中还有很多粗糙和错误的地方,需要在实际中不断磨合提高。国内好像使用titanium的朋友还不多,似乎用phonegap的多一些。等完成到一定阶段后,再提供下载吧。

以上的代码只是demo之用,在界面和防错处理上还要增加多一些代码才能真正商用。
  • 【转】利用Titanium实现外汇兑换计算的ios代码
            
    
    博客分类: Titanium appceleratortitaniummobilesample 
  • 大小: 38 KB
  • 【转】利用Titanium实现外汇兑换计算的ios代码
            
    
    博客分类: Titanium appceleratortitaniummobilesample 
  • 大小: 46.3 KB

猜你喜欢