欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-15 14:44:46
...
【原文】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