【Asp.net精品源码栏目提醒】:网学会员,鉴于大家对Asp.net精品源码十分关注,论文会员在此为大家搜集整理了“【精品】Windows Mobile 6.5 新功能widget开发 - 其它资料”一文,供大家参考学习!
Windows Mobile 6.5 新功能 widget 开发简介本文通过一个 Currency Converter外汇兑换例子,讲述 Windows Mobile 新功能 Widget 开发的基本概念和步骤,同时讲述了 Widget 如何调用 WebService。
背景最近比较关心汇率波动,所以在 Widget 上实现一个汇率转换器程序。
什么是WidgetWindows Mobile 6.5 引入了Widget功能。
为Windows Mobile开发提供了新的方式,使得开发WindowsMobile程序变得更简便,Widget的规范请看下面链接:http://www.w3.org/TR/2008/WD-widgets-20081222/ 。
Widget有三个关键文件如下图。
Config.xml 为配置文件,配置 Widget 的属性,这些属性包括名字,使用的 html 文件,是否访问网络以及图标等等。
Currency Converter This is a currency converter widgetCurrency.gif 为图标文件,实际应用中,该文件可以为 png,ico 等其他图形格式。
Currency.htm 为 Widget 的核心文件,开发 Widget 的核心就是开发该 html 文件,这里的 html 是指纯 htmlRaw HTML,开发者可以使用 HTML 来布局,使用 CSS 来定制样式,使用 JavaScript 来控制业务逻辑。
开发 widget 使我想起几年前做 JavaScript 的日子,那时候还没有 Ajax,
ASP.net 的服务器控件的交互性十分差,用户老是投诉界面的操作性,只好手工编写大量的 JavaScript 来提高用户体验。
每次调试 JavaScript 只能在 IE 5 上执行,然后 alert出调试信息。
开发 Widget,我还没有找到很好的方法进行调试,还是有点像以前开发 JavaScript 那样,使用 alert的方式进行调试。
实现HTML FromAustralian DollarAUDChinese YuanCNYHong Kong DollarHKDU.S. DollarUSD ToAustralian DollarAUDChinese YuanCNYHong Kong DollarHKDU.S. DollarUSD这里的 HTMl 十分简单,只是显示两个下拉框来表示币种,使用一个 input text 来显示 Webservice 查询结果。
菜单菜单指的是 Windows Mobile 的左右操作菜单,widget.menu 为 Windows Mobile 特有,在 PC 上调试该菜单不能呈现。
var menu widget.menu var menu1001 menu.createMenuItem1001 menu1001.text Convert menu1001.onSelect clickConvert menu.setSoftKeymenu1001 menu.leftSoftKeyIndex上面代码重写左边菜单,显示Convert, 并且绑定事件方法 clickConvert,效果图如上。
调用WebService该汇率转换程序是通过查询WebService来实现的,我使用的是http://www.webservicex.net/免费的WebService。
调用WebService的代码如下: var xmlHttpRequest null function clickConvert if window.XMLHttpRequest xmlHttpRequest new XMLHttpRequest else if window.ActiveXObject xmlHttpRequest new ActiveXObjectMicrosoft.XMLHTTP var url http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRateFromCurr ency document.getElementByIdFromBox.value ToCurrency document.getElementByIdToBox.value xmlHttpRequest.openGET url true xmlHttpRequest.onreadystatechange getData xmlHttpRequest.sendnull function getData if xmlHttpRequest.readyState 4 xmlHttpRequest.status 200 var myXml xmlHttpRequest.responseXML var xmlobject null var XMLText null if window.ActiveXObject XMLText myXml.childNodes1.firstChild.nodeValue else XMLText myXml.childNodes0.firstChild.nodeValue var result document.getElementByIdResult result.value document.getElementByIdFromBox.value to document.getElementByIdToBox.value : XMLText 先生成 XMLHttpRequest 的对象,组成需要访问的 WebService 的 Url,通过 GET 的方式进行访问。
返回结果的处理是异步的,通过 onreadystatechange 属性指定异步处理函数。
在访问过程中,getData会被回调几次,需要判断 xmlHttpRequest 的 readyState 和 status 来决定结果的返回。
返回结果的读取和 WebService 的接口有关,根据 WebService 的出口分析需要的数据。
这样一个调用 WebService的过程就完成了。
调试可以通过 PC 的 IE 进行调试,但是由于 IE 上没有 Windows Mobile 的菜单,所以需要做一点点特殊处理,例如我把名为 Result 的 input 框加入菜单的事件,那样在 IE 上只要点击该 input 框就可以进行调试了。
理论上也可以使用 FireBug 来进行调试,可是平台相关性的在 Firefox 就不能用了。
构建构建过程很简单,不需要编译,只需要压缩成 zip 格式的文件,把名字改成.wgt 或者.widget 就可以了。
我使用的 7zip 来进行构建,也可以写批处理文件进行构建,例如 mark.bat 文件,在批处理文件内进行压缩。
部署把.wgt 文件拷贝到 SD card。
在 Windows Mobile 打开 SD Card。
点击 Yes 进行安装。
运行安装后在 Start 菜单看到新的 Widget。
运行结果如下。
目前为止一个调用 WebService 的 Widget 已经完成了。
是不是很简单呢,我们基于免费 WebService开发其他 Widget。
关于 JavaScript 的 WebService 的开发,我参考了下面的文章,非常好。
Calling Cross Domain Web Services in AJAX中文方面的资料可以参考 郭靖 的系列文章 http://www.shangducms.com/category/Windows-Mobile-65.aspx。
这周比较忙,写了好几天,终于写完了,大家都 have a good weekend.源代码:CurrencyConverter.zip 请改名为Currency Converter.wgt。
运行环境:Windows Mobile 6.5