【原文】http://chuangyiji.com/2011/12/titanium-ios-android-exchange-code/
在帮公司的app写库函数和教程的时候,做了这个代码片段,titanium mobile还是很优雅的,主要的代码不过几十行,就实现了在ios设备下的外汇兑换计算功能,用户可以选择需要兑换的货币种类,然后输入金额,通过查询汇率就能完成计算。
目前来说,titanium mobile的弱项在于界面,所以我尽可能的要简化界面代码,好在ios设备的主要界面方式还是比较固定的,比如tableview,因此可以封装一些细节代码,使得前端的业务逻辑代码尽量简化。
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之用,在界面和防错处理上还要增加多一些代码才能真正商用。
- 大小: 38 KB
- 大小: 46.3 KB
分享到:
相关推荐
在iOS开发中,Titanium是一个流行的跨平台框架,它允许开发者使用JavaScript编写代码,同时能够构建原生的iOS和Android应用程序。"Titanium中支持iOS设备的拖拽"这一主题聚焦于如何在Titanium框架下实现iOS应用的...
"TiMetro"是一个创新项目,它允许开发者使用Titanium框架将流行的Microsoft Metro UI设计风格移植到iOS和Android平台上。这个项目对于那些希望在多种移动操作系统上实现统一视觉体验的开发者来说,具有重大意义。让...
总之,Titanium 插件开发是一个强大的工具,它扩展了 Titanium 的能力,使开发者能充分利用 JavaScript 的便利性来实现复杂的原生功能。通过学习和实践,开发者可以为自己的应用增添独特的特性,提高用户体验。
NappAppearance, 在 Titanium UI组件上,使用 iOS UIAppearance的功能 Napp外观描述Napp外观模块使用全局样式功能扩展了 Appcelerator Titanium Mobile 框架。 Napp外观在 Titanium 用户界面组件上使用 iOS ...
Ti.Bluetooth是一个开放源代码项目,旨在支持Appcelerator Titanium中的Bluetooth / BLE。 要求 适用于Android的Titanium SDK 7+ 适用于iOS的Titanium SDK 8+ iOS 10.0以上/ Android 4.0.0以上 Xcode 11以上 下载+...
1. **跨平台开发**:利用JavaScript语言,开发者可以编写一次代码,运行在iOS和Android等多个平台上,极大地提高了开发效率。 2. **原生性能**:尽管基于JavaScript,但Titanium通过运行时转换将代码编译为原生应用...
titanium_module_alipay_ios 支付宝的titanium module for ios 作者刘明星 本模块实现了支付宝手机支付sdk的封装,避免了wap支付接口每次支付还需要输入支付宝账号的麻烦。用本地sdk支付仅需要输入6位数字密码即可,...
`node-titanium-sdk`是Appcelerator Titanium SDK的一部分,允许开发者利用JavaScript编写代码,然后编译成iOS、Android以及Windows平台的应用程序。这种方式极大地提高了开发效率,因为开发者只需要掌握一种语言...
### Titanium Mobile API 知识点详解 #### 一、Titanium Mobile API 概述 Titanium Mobile API 是一款由 Appcelerator 公司提供的用于跨平台移动应用开发的强大工具包。该工具允许开发者使用 JavaScript 编写应用...
Appcelerator Titanium中的PayPal iOS SDK 概括 Ti.PayPal是一个开源项目,旨在支持Appcelerator的Titanium Mobile中的PayPal iOS-SDK2.x。 该模块当前支持以下API: 简单付款 未来付款 商家配置 注意:这是Ti....
Titanium中文版开发手册是一份专门为中文用户编译的开发者指南,旨在帮助熟悉中文的开发者充分利用Titanium框架进行移动应用的开发。Titanium是一个开源的JavaScript平台,允许开发者使用JavaScript、HTML和CSS来...
它允许开发者使用JavaScript编写代码,同时能够利用iOS、Android等平台的原生功能。在涉及到“titanium 打开本地网络”的话题时,我们主要关注的是如何在Titanium应用程序中检测和管理本地网络状态。 一、Titanium...
### 关于Titanium Mobile开发跨平台iOS和Android应用 #### 我们的主角-Titanium Mobile Titanium Mobile是一种跨平台的移动应用开发框架,它允许开发者使用JavaScript、HTML和CSS来构建高性能的原生应用程序。该...
通过Titanium,开发者可以利用一套代码库构建多平台应用,减少重复工作,提高开发效率。 “weatherSample”项目的核心功能是展示如何利用Titanium API获取并显示天气数据。在项目中,开发者可能会使用Titanium的...
- **跨平台兼容性**:通过一次编写代码即可在多个平台上运行,如iOS和Android。 - **JavaScript支持**:使用广泛流行的JavaScript语言进行开发,降低了学习曲线。 - **社区资源丰富**:拥有活跃的开发者社区,提供了...
它的核心理念是提供一个统一的开发环境,让开发者可以通过一套代码实现跨平台的开发,同时尽可能地接近原生应用的性能。钛的这一特性得益于其对本地API的直接访问,这使得开发者能够利用每个平台的独特功能,如GPS、...
这篇博客“使用Titanium来开发“Path”的一些创新UI布局 - 左右菜单”可能探讨了如何利用 Titanium 创建类似 Path 应用的界面设计,其中包含了左右滑动切换菜单的实现。Path 是一款知名的社交应用,其用户界面以其...
在移动应用开发中,Hybrid技术是一种常见的解决方案,它结合了Web技术和原生应用程序的优点,使得开发者能够利用HTML5、CSS3和JavaScript等Web技术来构建应用,同时也能调用原生平台的功能,如Android或iOS。...