成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

基于OPhone的Widget聯網實例開發(2)

移動開發
Widget是一個互動式的迷您應用程序,您可以在移動設備上運行能迅速方便地訪問Internet上的內容。移動Widget例子有:每日天氣更新,新聞閱讀組件,貨幣轉換器,時鐘或日歷提醒等。

接上文《基于OPhone的Widget聯網實例開發

2.添加貨幣選擇欄

(1)在html文件中的table里再添加一行三列,代碼如下

  1. <tr> <td align="right" > <select id=  
  2. "currency_left" onchange="getLeftOption(this)  
  3. > <option value="CNY">人民幣<option> 
  4. <option value="USD">美元option> ...省略...   
  5. <option value="EUR">歐元option>   
  6. select> td> <td width="50" font-size="0.6em">兌換td> 
  7. <td align="left" >   
  8. <select id="currency_right" onchange="getRightOption(this)" > 
  9. <option value="CNY">人民幣  
  10. option> <option value="USD">美元option> 
  11.  <option value="JPY">日元option> ...省略... <option value="EUR">歐元  
  12. option> select> td> tr>    

上面代碼的意思主要是創建一行三列,第一和第三列放置貨幣選擇欄

(2)在css里添加對應的代碼

  1. #currency_left,#currency_right { font-size: 0.8em; }    

設置貨幣選擇欄的字體大小

接著就可以保存,Run AS運行,看下效果了:

 

3.添加貨幣金額輸入欄

(1)在html中table里再增加一行三列

  1. <tr> <td align="right" > 
  2. <INPUT id="num_left" type="text" value="1" size="8" > 
  3. td><td width="50"> 
  4. <img id="arrowimg" src="images/forward.png"   
  5. align="center" onclick="calculateCurrency()"> 
  6. img> td> <td align="left" >   
  7. <INPUT id="num_right" type="text" value="1" size="8" disabled="true">   
  8. td> tr>    

也是創建一行三列,其中第二列放置一個向后的箭頭#t#

 

第一和第三列放置輸入框,并且設置第三列的輸入框禁止輸入,這樣只能按箭頭的方向由左邊輸入金額,右邊顯示兌換后的金額。

(2)最后把上面的箭頭圖片拷到硬盤上這個工程目錄下的images文件夾中,然后回到JIL中按F5刷新(和上一步是添加背景圖片bg.png的操作一樣)。

接著就可以保存,Run AS運行,看下效果了:

 


這樣界面上半部分的布局我們就完成了,下面我們在js里添加對應的事件處理。#p#

添加事件處理

1.添加network.js的調用

首先在硬盤上的工程目錄下創建一個名為js的文件夾,把我們之前創建的那個network.js文件拷進去,并且把CurrencyHand.js這個文件也移進去,F5刷新,可以看到現在的工程目錄下增加了js文件夾

 

同時修改html中的head部分原來關于CurrencyHand.js文件的鏈接,并增加對network.js的鏈接,修改后如下

這樣就可以調用network.js中已經寫好的請求xml數據的函數了。

2.了解請求的數據形式

在開始請求數據前,我們首先看一下我們要請求的數據的內容及格式

我們使用一個公共的網站來獲取實時的更新數據,這個網址為

這是歐洲中央銀行(ECB:European Central Bank)提供的數據鏈接,是以歐元為基準的,和其他各種貨幣間的實時更新的匯率關系。內容和格式為:

  1. xml version="1.0" encoding="UTF-8"?> - <gesmes:Envelope xmlns:gesmes=  
  2. http://www.gesmes.org/xml/2002-08-01
  3.  xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref">   
  4. <gesmes:subject>Reference rates  
  5. gesmes:subject> - <gesmes:Sender> <gesmes:name>European Central Bank  
  6. gesmes:name> gesmes:Sender> - <Cube> -   
  7. <Cube time="2009-12-22">   
  8. <Cube currency="USD" rate="1.4279" />   
  9. <Cube currency="JPY" rate="130.83" />   
  10. <Cube currency="BGN" rate="1.9558" />   
  11. <Cube currency="CZK" rate="26.266" /> 
  12.  <Cube currency="DKK" rate="7.4420" /> 
  13.  <Cube currency="EEK" rate="15.6466" />   
  14. <Cube currency="GBP" rate="0.89305" /> 
  15.  <Cube currency="HUF" rate="274.28" />   
  16. <Cube currency="LTL" rate="3.4528" /> 
  17.  <Cube currency="LVL" rate="0.7080" /> 
  18.  <Cube currency="PLN" rate="4.1770" />   
  19. <Cube currency="RON" rate="4.2193" />   
  20. <Cube currency="SEK" rate="10.4295" /> 
  21.  <Cube currency="CHF" rate="1.4987" />   
  22. <Cube currency="NOK" rate="8.3650" />   
  23. <Cube currency="HRK" rate="7.2830" /> 
  24.  <Cube currency="RUB" rate="43.6041" />   
  25. <Cube currency="TRY" rate="2.1798" />   
  26. <Cube currency="AUD" rate="1.6259" /> 
  27.  <Cube currency="BRL" rate="2.5468" /> 
  28.  <Cube currency="CAD" rate="1.5109" /> 
  29.  <Cube currency="CNY" rate="9.7498" />   
  30. <Cube currency="HKD" rate="11.0744" />   
  31. <Cube currency="IDR" rate="13543.20" /> 
  32.  <Cube currency="INR" rate="66.8200" />   
  33. <Cube currency="KRW" rate="1685.05" /> 
  34.  <Cube currency="MXN" rate="18.4699" /> 
  35.  <Cube currency="MYR" rate="4.9100" />   
  36. <Cube currency="NZD" rate="2.0294" />   
  37. <Cube currency="PHP" rate="66.389" /> 
  38.  <Cube currency="SGD" rate="2.0076" />   
  39. <Cube currency="THB" rate="47.492" /> 
  40.  <Cube currency="ZAR" rate="11.0340" /> 
  41.  Cube> Cube> gesmes:Envelope>    
  42.  

#p#3.實現事件處理函數

好了,知道了網址和其提供的數據格式后,接下來我們就可以使用Ajax的形式請求數據,并通過DOM的方式從中解析出我們需要的某些項數據。

下面修改CurrencyHand.js文件,首先刪除里面自動生成的代碼

我們在html里注冊了三個事件,貨幣選擇欄有兩個事件getLeftOption(this),getRightOption(this),表示貨幣金額兌換的箭頭有一個事件calculateCurrency(),下面我們就來實現這三個事件

(1)首先定義一些變量,添加表示URL及左右貨幣名稱和匯率比例的變量,

  1. var gUrl = 'http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml';   
  2. var leftCurrency="CNY"; var rightCurrency="CNY"; var currencyRate=0;    

設左右貨幣的初始名為CNY,人民幣。

(2)然后就 可以實現左邊那個選擇欄注冊的事件

  1. function getLeftOption(object)   
  2. { var valueOption=object.options  
  3. [object.options.selectedIndex].  
  4. value; leftCurrency=valueOption;  
  5.  document.getElementById("flag_left").  
  6. setAttribute("src", "images/" +   
  7. leftCurrency+ "1.png");   
  8. requestXML(gUrl, iterateXML, showStatus); }    
  9.  

getLeftOption(object)函數首先獲左取選取欄選取的貨幣名稱,并改變和貨幣對應的左邊的國旗,最后就是調用我們在network.js里定義的那個請求xml數據的函數requestXML,并且傳進的參數中URL為gUrl,數據請求成功的回調函數為iterateXML,失敗的回調函數為showStatus。

首先看下失敗的回調函數showStatus,

  1. function showStatus(text) { alert(text); }    

函數很簡單,就是顯示出失敗的原因。

(3)下面重點看下數據請求成功的回調函數iterateXML,在這個函數里主要對返回的xml文件進行DOM解析

  1. function iterateXML(xmlDoc)   
  2. { var leftRate=0; var rightRate=0; var items=xmlDoc.getElementsByTagName  
  3. ("Cube"); for (var i = 2; i < items.length; i++)   
  4. { var itemCurrency = items[i].getAttribute("currency"); if(itemCurrency==leftCurrency)   
  5. leftRate=items[i].getAttribute("rate"); }   
  6. if(itemCurrency==rightCurrency)   
  7. rightRate=items[i].getAttribute("rate"); }  
  8.  if(leftCurrency=="EUR") { leftRate=1; }  
  9.  if(rightCurrency=="EUR") { rightRate=1; } }  
  10.  currencyRate=rightRate/leftRate;   
  11. document.getElementById("num_left").  
  12. value=1; document.getElementById("num_right").  
  13. valuecurrencyRate; }    

這個函數主要用來解析匯率數據,我們由之前的數據文件看到,匯率信息存儲在由Cube表示的標簽中,所以我們獲得所有Cube名字的標簽,然后分別從這些標簽里讀出左右貨幣名的匯率,由于這些匯率是以歐元為基準的,因此歐元并沒有在Cube標簽集中,因此對選擇了歐元的貨幣的匯率進行單獨處理。然后計算,獲得兩個貨幣間的匯率關系,并把結果在界面上顯示出來。

同理,右邊選擇欄的事件函數內容類似

  1. function getRightOption(object) { ...省略... }   

(4)接下來還有箭頭上注冊的兌換函數

  1. function calculateCurrency()   
  2. { var moneySum=document.getElementById("num_left").value;   
  3. document.getElementById("num_right").value=currencyRate*moneySum; }    

這個函數也很簡單,就是讀出左邊輸入的金額數目,然后和匯率相乘,就是兌換成的右邊貨幣的金額。

這樣我們就實現了界面上半部分對應的功能,

保存,Run As,看下效果吧,

 

和聯網相關的功能我們就實現了,我們可以從遠程的網站服務器上讀取我們所需的數據,并且用DOM的方式對數據進行提取。

雖然界面的下半部分我們還沒有實現,但那只是一些界面元素的布局及顯示,核心的聯網讀取數據我們通過界面上半部分的功能已經實現了,因此限于篇幅,快速瀏覽欄部分就不再介紹實現了,不過有了前面的介紹,下半部分也應該好實現了,只是元素的布局顯示及對應的事件處理而已。

總結

我們首先介紹了聯網的Widget的作用,并且簡單介紹了相關的Ajax和DOM的基本知識,并完成了可以請求xml數據的函數,如果在JIL上請求xml數據,則可以直接使用。最后通過一個實時查看匯率的實例對如何在OPhone是開發需要聯網獲取數據的Widget進行了具體的介紹。

以上我們只是簡單的介紹了Widget聯網相關的基本知識及簡單的例子,更復雜的內容我們以后接著學習。

責任編輯:chenqingxiang 來源: ophonesdn
相關推薦

2010-07-26 14:25:06

Widget開發

2009-09-08 17:45:13

Ophone Widg

2011-09-07 17:54:40

Android Wid開發

2011-09-08 13:11:07

Android Wid實例

2010-09-15 13:54:36

WidgetOPhone

2010-07-26 13:55:10

OPhone游戲開發

2011-09-08 13:41:53

Widget

2011-08-01 16:43:51

ibmdwHTML5Dojo

2011-09-08 09:38:46

HTML5 WidgeDojo

2011-09-07 14:01:41

Android Wid實例

2011-09-09 13:23:17

Widget

2009-08-03 09:41:11

OPhone SDK

2010-07-26 12:33:04

控件

2010-07-26 12:57:12

OPhone游戲開發

2010-07-23 14:51:09

OPhone開發

2011-02-28 13:04:27

RelativeLayAndroid Wid

2011-09-07 13:42:36

Android Wid實例

2011-05-03 15:13:23

BlackBerryWidget

2010-07-13 09:02:19

Widget開發

2011-09-09 20:14:58

Android Wid
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区四区免费观看 | 久久精品中文 | 91精品国产91久久久久青草 | 午夜精品久久久久久久久久久久 | 亚洲毛片在线观看 | 毛片.com | 国产高清免费 | 极品久久| 亚洲最大av网站 | 成人小视频在线免费观看 | 日韩免费一级 | 中文字幕免费在线 | 精品一区二区三区日本 | 精品伦精品一区二区三区视频 | 国产99视频精品免费视频7 | 亚洲欧美网站 | 国产亚洲久 | 亚洲视频在线观看 | 国产免费人成xvideos视频 | 国产精品色一区二区三区 | 国产成人亚洲精品 | 成人在线中文字幕 | 波多野结衣一区二区三区 | 91精品国产综合久久国产大片 | 久久另类视频 | 国产在线观看一区二区 | 亚洲网址 | 成人精品一区二区户外勾搭野战 | 国产四区 | 国产精品海角社区在线观看 | 国产又爽又黄的视频 | 亚洲精品一区久久久久久 | 91亚洲欧美| 九九激情视频 | 91免费观看 | 欧美精品91爱爱 | 国外成人在线视频 | 国产综合精品 | 无码一区二区三区视频 | 精品国产免费一区二区三区五区 | 精品91久久久 |