偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

基于OPhone的Widget聯(lián)網(wǎng)實(shí)例開發(fā)(1)

移動(dòng)開發(fā)
Widget是一個(gè)互動(dòng)式的迷您應(yīng)用程序,您可以在移動(dòng)設(shè)備上運(yùn)行能迅速方便地訪問Internet上的內(nèi)容。移動(dòng)Widget例子有:每日天氣更新,新聞閱讀組件,貨幣轉(zhuǎn)換器,時(shí)鐘或日歷提醒等。

概述

下面我們就以一個(gè)可以實(shí)時(shí)更新的匯率查看程序來說明一下OPhone上的聯(lián)網(wǎng)Widget的具體開發(fā)過程。我們這個(gè)實(shí)例叫匯率通,可以查看目前主流的各種貨幣相互間的匯率關(guān)系。我們先看下整體的效果。

 

基礎(chǔ)知識(shí)簡(jiǎn)介

為了實(shí)現(xiàn)Widget的聯(lián)網(wǎng)例子,我們需要了解兩方面的內(nèi)容,Ajax和DOM,下面就簡(jiǎn)單介紹下其中我們這個(gè)例子需要用到的內(nèi)容。Ajax(AsynchronousJavaScriptandXML,異步JavaScript和XML)Ajax就是使用基于JavaScript的XMLHttpRequest對(duì)象,向Web服務(wù)器發(fā)送異步請(qǐng)求,獲取數(shù)據(jù)。#t#

(1)請(qǐng)求方式有兩種:

Get:從服務(wù)器查詢數(shù)據(jù)

Post:要向服務(wù)器發(fā)送數(shù)據(jù)

(2)XMLHttpRequest對(duì)象的方法有

open("method","URL","async"):設(shè)置請(qǐng)求方式

setRequestHeader:設(shè)置發(fā)送的請(qǐng)求的頭部信息,包括請(qǐng)求的內(nèi)容格式,長度等,最常用的是設(shè)置請(qǐng)求的格式,如setRequestHeader("Content-type","text/xml");

send():發(fā)送請(qǐng)求

(3)XMLHttpRequest對(duì)象的屬性有

Onreadystatechange:狀態(tài)發(fā)生變化時(shí)觸發(fā)的事件處理

readyState:上面說得的狀態(tài),有5種,0:未初始化1:載入中2:已載入3:交互中4:完成。我們可以在不同的狀態(tài)是采取不同的事件處理,比如在狀態(tài)2已載入是可以注冊(cè)一個(gè)onLoading()函數(shù),在狀態(tài)4是注冊(cè)onComplete()

responseText:返回的文本,可以通過innerHTML的形式直接賦給html中某元素來顯示

responseXML:返回的xml格式的內(nèi)容

Status:請(qǐng)求的狀態(tài),有好多,其中必須用到的是200,表示請(qǐng)求成功,請(qǐng)求的文檔或文件已經(jīng)找到,并且正確返回,我們也會(huì)關(guān)注請(qǐng)求失敗的一些狀態(tài),最常見的比如404,表示沒有找到請(qǐng)求的文件

statusText:和上面status對(duì)應(yīng)的文本說明,比如200對(duì)應(yīng)OK,404對(duì)應(yīng)NotFound

好了,下面我們就來創(chuàng)建一個(gè)基本的Ajax請(qǐng)求及數(shù)據(jù)處理框架

基本內(nèi)容為首選創(chuàng)建一個(gè)XMLHttpRequest類型的對(duì)象,接著設(shè)置基本的參數(shù),然后判斷請(qǐng)求的狀態(tài),并提供回調(diào)函數(shù)以增強(qiáng)對(duì)數(shù)據(jù)的處理

我們可以創(chuàng)建一個(gè)network.js的文件,把下面的代碼拷進(jìn)去

  1. /** * Make a request for an XML document.   
  2. * * @param url * the url for the 'GET' call   
  3. * @param onSuccess * a call-back for successful completion of request * @param onError   
  4. * a call-back for request failure */ var globalReq; function requestXML(url, onSuccess, onError)   
  5. { //創(chuàng)建一個(gè)XMLHttpRequest的對(duì)象 globalReq =new XMLHttpRequest(); if (globalReq)   
  6. { //以Get的方式向給定的url異步發(fā)送數(shù)據(jù)請(qǐng)求 globalReq.open('GET', url, true);   
  7. // 設(shè)置發(fā)送請(qǐng)求的數(shù)據(jù)格式為xml globalReq.setRequestHeader("Content-type", "text/xml");  
  8.  // 異步回調(diào)函數(shù)跟蹤請(qǐng)求狀態(tài)的改變 globalReq.onreadystatechange = function()   
  9. { //如果狀態(tài)不是4,即請(qǐng)求沒有完成,則不做處理,直接返回,直到完成了請(qǐng)求的全過程 if (globalReq.readyState != 4)   
  10. { return; } //如果完成了此次請(qǐng)求過程,判斷返回的狀態(tài)是否表示成功,即是否為200 if (globalReq.status == 200)   
  11. { //如果請(qǐng)求數(shù)據(jù)成功,則在回調(diào)函數(shù)onSuccess中對(duì)請(qǐng)求的xml格式數(shù)據(jù)進(jìn)行處理 onSuccess(globalReq.responseXML); }   
  12. else { //如果請(qǐng)求數(shù)據(jù)失敗,則在回調(diào)函數(shù)onError中打印出失敗的原因 onError("Web data unavailable " + globalReq.statusText); } };   
  13. // 發(fā)送請(qǐng)求 globalReq.send(null); } }    
  14.  

有了之前的介紹及代碼中的詳細(xì)注釋,我們對(duì)requestXML這個(gè)以Ajax形式請(qǐng)求xml數(shù)據(jù)的函數(shù)應(yīng)該能理解了,需要說明的是,因?yàn)槲覀兪情_發(fā)OPhone的JILWidget,因此沒有像桌面瀏覽器上用的這樣增加兼容性判斷,同時(shí),我們只對(duì)請(qǐng)求完成后數(shù)據(jù)請(qǐng)求是否成功或失敗兩種狀態(tài)感興趣,因此只有onSuccess和onError兩個(gè)回調(diào)函數(shù)。

這樣,當(dāng)我們需要請(qǐng)求網(wǎng)絡(luò)xml數(shù)據(jù)時(shí),就可以在html文件中包含上面這個(gè)network.js文件,然后傳進(jìn)請(qǐng)求的URL及成功和失敗調(diào)用的回調(diào)函數(shù)就行了。#p#

DOM(DocumentObjectModule文檔對(duì)象模型)

DOM是表示文檔、訪問和操作文檔元素的應(yīng)用程序接口(API),所有支持JavaScript的瀏覽器引擎都支持DOM,用DOM可以方便的操作html和xml文件中的元素。

(1)訪問方法有:getElementById():按id獲取元素

getElementsByName():按標(biāo)簽名獲取元素

(2)添加和刪除方法有:createElement():創(chuàng)建一個(gè)元素

appendChild():添加子元素

removeChild():刪除子元素

(3)操作屬性方法:getAttribute():獲取屬性值

setAttribute():設(shè)置屬性值

創(chuàng)建工程

首先打開JIL開發(fā)工具,選擇File->New->WidgetProject,創(chuàng)建以CurrencyHand為工程名的工程,并記住工程的保存路徑。創(chuàng)建完后如下圖所示。

JIL默認(rèn)生成的內(nèi)容

 

主要有:

bin/CurrencyHand.wgt:最終的發(fā)布文件,并且隨著程序內(nèi)容的修改實(shí)時(shí)更新的,不需要手動(dòng)干預(yù)。

config.xml:程序配置文件,包含程序版本,高寬度,網(wǎng)絡(luò)連接等各種配置,開始時(shí)按默認(rèn)配置即可。

Default.png:默認(rèn)的背景圖片,我們會(huì)使用自己的背景。

Icon.png:在手機(jī)上顯示的程序圖標(biāo)。

CurrencyHand.css:界面布局顯示控制文件。

CurrencyHand.html:程序主界面,用來存放及展示各種元素,我們的四個(gè)界面都在這里顯示,其實(shí)也是標(biāo)準(zhǔn)的網(wǎng)頁程序。JIL開發(fā)工具自動(dòng)為我們生成了對(duì)應(yīng)的框架,包括head和body部分,并且在head里已經(jīng)增加了對(duì)css和js兩個(gè)文件的鏈接引用。

CurrentHand.Js:javascript文件,主要用來控制程序的流程及實(shí)現(xiàn)相關(guān)的邏輯功能,如果有多個(gè)就是文件,我們可以創(chuàng)建一個(gè)js的文件夾,把對(duì)應(yīng)的js文件都整理在這個(gè)文件夾下

主體設(shè)計(jì)
我們希望把這個(gè)程序的界面設(shè)計(jì)成兩部分,上半部分是各種貨幣的選擇及兩兩貨幣間的匯率關(guān)系的顯示及可以輸入一定數(shù)額的來進(jìn)行貨幣的兌換,下半部分相當(dāng)于一個(gè)快速瀏覽欄,你可以把感興趣的貨幣間的匯率關(guān)系添加進(jìn)來,并且可以添加最多5組,來更好的比較某一個(gè)貨幣和其他多個(gè)貨幣的匯率關(guān)系。#p#

布局界面的上半單元

1.添加代表兩種貨幣的國旗(其中港元為香港特別行政區(qū)區(qū)旗)

(1)刪除掉html文件中的原來的body部分,用下面的代碼代替

  1. <body> <div id="mainview" > <table> <tr> <td><img id="flag_left" src="images/CNY1.png"   
  2. align="right">td> <td width="50"> 
  3. td> <td><img id="flag_right"   
  4. src="images/CNY1.png" align="left"> 
  5. td> tr> table> div> body>    
  6.  
  7. <body> <div id="mainview" >   
  8. <table> <tr> <td><img id="flag_left" src="images/CNY1.png" align="right"> 
  9. td> <td width="50">td> <td> 
  10. <img id="flag_right"   
  11. src="images/CNY1.png" align="left"> 
  12. td> tr> table> div> body> 

上面代碼的意思主要是創(chuàng)建一個(gè)id為mainview的div塊,然后在里面放了一個(gè)表格,目前表格為一行三列,其中第一和第三列分別放置了圖片,初始值都為代表人民幣的中國國旗圖片。

(2)接著也刪除css文件里自動(dòng)生成的內(nèi)容,用下面的代碼代替

  1. body{ height: 100%; background-image:url  
  2. (images/bg.png);   
  3. background-repeat:no-repeat; } #mainview   
  4. { margin-left:5px; margin-top:50px; }  

首先在body部分設(shè)定了背景圖,接著設(shè)定div塊距頂部和左邊的距離。

(3)增加圖片

因?yàn)槲覀冇昧俗约禾砑泳皥D片,所以得在硬盤上的工程目錄文件夾下創(chuàng)建一個(gè)用來存放圖片的文件夾images,在里面放入一個(gè)我們制作好的背景圖片bg.png,

 

圖片的大小為320x480,因?yàn)椴挥媚J(rèn)的背景圖片Default.png,所以刪除。

同時(shí)在images文件夾中添加各種貨幣對(duì)應(yīng)的國旗(其中港元為香港特別行政區(qū)區(qū)旗),一共有33種,如下圖所示(部分)

圖4 

再回到JIL的左邊的packageexplorer窗口按F5快捷鍵刷新或右鍵點(diǎn)擊工程名后選擇Refresh,就可以看到更新后的目錄,增加了images文件夾。

 

完成后保存,右鍵點(diǎn)擊工程名后選擇RunAS->WidgetApplication,如圖所示,就可以在模擬器中看到國旗放置的效果了。(注:第一次啟動(dòng)模擬器,速度會(huì)比較慢,打開后就不必關(guān)閉了,代碼修改后直接RunAs即可)。

責(zé)任編輯:chenqingxiang 來源: ophonesdn
相關(guān)推薦

2010-07-26 14:44:47

Widget開發(fā)

2009-09-08 17:45:13

Ophone Widg

2011-09-07 17:54:40

Android Wid開發(fā)

2011-09-08 13:11:07

Android Wid實(shí)例

2010-09-15 13:54:36

WidgetOPhone

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實(shí)例

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游戲開發(fā)

2011-02-28 13:04:27

RelativeLayAndroid Wid

2011-09-07 13:42:36

Android Wid實(shí)例

2010-07-23 14:51:09

OPhone開發(fā)

2011-05-03 15:13:23

BlackBerryWidget

2010-07-13 09:02:19

Widget開發(fā)

2011-09-09 20:14:58

Android Wid

2009-08-17 17:53:07

RSS訂閱開發(fā)實(shí)例
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)