自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

PhoneGap+jQuery Mobile打造本地化Web App

移動(dòng)開(kāi)發(fā)
我們沒(méi)必要學(xué)習(xí)苦行僧那樣,用記事本來(lái)打代碼.目前而言呢,PhoneGap的IDE工具最好的當(dāng)然是Dreamweaver CS 5.5.不過(guò),我這里使用Eclipse作為我的開(kāi)發(fā)IDE,因?yàn)橹笆褂眠^(guò)Dreamweaver CS 5.5 ,這次就換個(gè)IDE工具.

Eclipse 的配置

1,一站式新建項(xiàng)目 phonegap + jqm

http://svn.codespot.com/a/eclipselabs.org/mobile-web-development-with-phonegap/tags/r1.2/download/

這個(gè)插件還是很給力的,已經(jīng)支持默認(rèn)支持最新版本的phonegap,jqm,sencha

安裝完以后選擇這個(gè)圖標(biāo)

20120210200731417.png

2,選擇要建何種類(lèi)型的phoneGap (1),默認(rèn)已經(jīng)支持直接創(chuàng)建最新版本的phoneGap

(2),這個(gè)插件支持兩大移動(dòng)js框架jqm & Sencha Touch,當(dāng)然..這兩個(gè)框架只能二選一了,你不選也行…

(3),我這里選擇我最為熟悉的jQm框架,默認(rèn)已經(jīng)支持最新版本了

201202102007388669.png

3,接著,創(chuàng)建android項(xiàng)目即可

201202102007472134.png

接下來(lái)就不啰嗦了…

完成以后:項(xiàng)目結(jié)構(gòu),activity都已經(jīng)寫(xiě)好的了..

201202102007578981.png

代碼也已經(jīng)寫(xiě)好了.

201202102008107859.png

注意:新建完以后,可能androidmainifest會(huì)報(bào)錯(cuò),你把報(bào)錯(cuò)的那行代碼刪掉即可,你也可以根據(jù)那個(gè)代碼要求找一個(gè)支持xlarge包的android版本(4.0吧)(貌似2.2沒(méi)有這玩意),我這里省事直接刪掉算了…

201202102008139826.png

自帶例子簡(jiǎn)單介紹

在新建一個(gè)page,想使用插件幫你打包好的API你需要以下步驟

1,準(zhǔn)備JS文件,滑輪到index.html文件最后幾行;

//這個(gè)JS是必須的,調(diào)用的是設(shè)備的初始化//以下API自己按照自己的喜好調(diào)用和修改吧

2,在body上調(diào)用init()方法,具體使用參見(jiàn)device.js.

3,順便你寫(xiě)了…

例子演示

感覺(jué),這個(gè)跟這個(gè)jqm一起的例子,個(gè)人感覺(jué)比官方那個(gè)好很多…截個(gè)圖,結(jié)束吧…

201202102008219571.png

#p#

前言

上一章中,我們討論了環(huán)境的配置,這本章中我們,寫(xiě)一個(gè)小模塊來(lái)貫通學(xué)習(xí),phonegap對(duì)攝像頭的調(diào)用,已經(jīng)phonegap對(duì)于拍下來(lái)的照片的處理,已經(jīng),使用本地?cái)?shù)據(jù)庫(kù)保存我們的數(shù)據(jù),讓在程序重新運(yùn)行的時(shí)候能夠保留我們的結(jié)果.先說(shuō)明一下,為了,減少工作量,很多地方由于,官方文檔已經(jīng)很詳細(xì)了我就難得在描述了,如果有些地方,沒(méi)有而官方文檔也沒(méi)有的話,可以來(lái)問(wèn)我...

例子設(shè)計(jì)

我們一般注冊(cè)都有一個(gè),上傳圖像的模塊,以前,用電腦注冊(cè)的話,這個(gè)頭像就比較麻煩了,不過(guò),我們用手機(jī)的話就基本沒(méi)這個(gè)問(wèn)題了,這個(gè)例子就是,使用phonegap 調(diào)用攝像頭拍下我們的頭像,上傳到服務(wù)器,然后,也保存到本地里面,方便加載.

原型設(shè)計(jì):

顯示用的主頁(yè)

201202141443568791.png

調(diào)用拍照的頁(yè)面

201202141444022450.png

為了,突顯出我們用jqm的好處的,增加一個(gè)swip事件來(lái)控制,頁(yè)面的切換

201202141444075519.png

代碼編寫(xiě)

1,寫(xiě)個(gè)模板,方便,我們以后的代碼的重用

  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4.     <meta charset="UTF-8"> 
  5.     <!--自適應(yīng)界面,如果出現(xiàn),在某些設(shè)備出現(xiàn)界面偏小的話,檢查一下有沒(méi)有加入這句 --> 
  6.     <meta http-equiv="Content-type" name="viewport" 
  7.           content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no, width=device-width"> 
  8.     <!--樣式--> 
  9.     <link rel="stylesheet" href="jquery.mobile/jquery.mobile-1.0.1.min.css" /> 
  10.     <!--end--> 
  11.     <!--導(dǎo)入的js框架--> 
  12.     <script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script> 
  13.     <script src="jquery.mobile/jquery-1.6.4.min"></script> 
  14.     <script src="jquery.mobile/jquery.mobile-1.0.1.min.js"></script> 
  15.     <!--end--> 
  16.     <!--自己寫(xiě)的js--> 
  17.     <script type="text/javascript"> 
  18.  
  19.  
  20.     </script> 
  21.     <!--end--> 
  22. </head> 
  23. <body onload="init();"> 
  24. <div data-role="page" id="home"> 
  25.     <div data-role="header"> 
  26.         <h1>Hello,World</h1> 
  27.     </div> 
  28.     <div data-role="content" id="content"> 
  29.         <h1>content</h1> 
  30.     </div> 
  31.     <div data-role="footer"> 
  32.         <h1>footer</h1> 
  33.     </div> 
  34. </div> 
  35.  
  36. <!--import custom library --> 
  37. <script type="text/javascript" charset="utf-8" src="apis/camera.js"></script> 
  38. <script type="text/javascript" charset="utf-8" src="apis/device.js"></script> 
  39. <script type="text/javascript" charset="utf-8" src="apis/storage.js"></script> 
  40. <!--end--> 
  41. </body> 
  42. </html> 

2,模板寫(xiě)好了,就開(kāi)始我們實(shí)際代碼的編寫(xiě)吧.

1,首先,編寫(xiě)我們的device.js文件進(jìn)行對(duì)應(yīng)用的初始化工作

  1. function init() { 
  2. document.addEventListener("deviceready", onDeviceReady, true); 

2,然后接著寫(xiě)初始化用干的事情

  1. var onDeviceReady = function() { 
  2.     console.log("deviceready event fired"); 
  3.       
  4. // api-camera  Photo URI 
  5.     pictureSource=navigator.camera.PictureSourceType; 
  6.     destinationType=navigator.camera.DestinationType; 
  7.     //這里是初始化主頁(yè),如果,已經(jīng)有頭像的話,就加載 
  8.     var saveImage = kget("image"); 
  9.     if(saveImage){ 
  10.          //console.log("have image"+saveImage); 
  11.           var cameraImage = document.getElementById('cameraImage'); 
  12.           cameraImage.style.visibility = 'visible'
  13.           cameraImage.src = "data:image/jpeg;base64," + saveImage; 
  14.            
  15.     } 
  16.     //系統(tǒng)的事件,按需求實(shí)現(xiàn)自己的回調(diào)方法,這里就默認(rèn)了.. 
  17.     document.addEventListener("searchbutton", onSearchKeyDown, false);   
  18.     document.addEventListener("menubutton", onMenuButtonDown, false); 
  19.     document.addEventListener("pause", onEventFired, false); 
  20.     document.addEventListener("resume", onEventFired, false); 
  21.     document.addEventListener("online", onEventFired, false); 
  22.     document.addEventListener("offline", onEventFired, false); 
  23.     document.addEventListener("backbutton", onEventFired, false); 
  24.     document.addEventListener("batterycritical", onEventFired, false); 
  25.     document.addEventListener("batterylow", onEventFired, false); 
  26.     document.addEventListener("batterystatus", onEventFired, false); 
  27.     document.addEventListener("startcallbutton", onEventFired, false); 
  28.     document.addEventListener("endcallbutton", onEventFired, false); 
  29.     document.addEventListener("volumedownbutton", onEventFired, false); 
  30.     document.addEventListener("volumeupbutton", onEventFired, false); 
  31. }; 

這樣我們的devices.js就簡(jiǎn)單的寫(xiě)完了.

3,寫(xiě)UI界面,這里也很簡(jiǎn)單

  1. <body> 
  2.         <div data-role="page" id="home"> 
  3.             <div data-role="header"> 
  4.                 <h1>個(gè)人信息</h1> 
  5.                 <a href="#setting" data-icon="home" id="intro" class="ui-btn-right">設(shè)置</a> 
  6.             </div> 
  7.             <div data-role="content" id="homeContent"> 
  8.                 <p>頭像</p> 
  9.                 <img id="cameraImage" src="" /> 
  10.                 <!--這一塊的動(dòng)態(tài)實(shí)現(xiàn)你會(huì)圖片的讀取和存儲(chǔ),這個(gè)就很簡(jiǎn)單了..這里就不做介紹了..--> 
  11.                 <p>名字:阿柴</p> 
  12.                 <p>聯(lián)系方式:xxxxx</p> 
  13.             </div> 
  14.         </div> 
  15.         <div data-role="page" id="setting"> 
  16.             <div data-role="header"> 
  17.                 <h1>頭像設(shè)置</h1> 
  18.             </div> 
  19.             <div data-role="settingContent"> 
  20.                 <p>頭像</p> 
  21.                 <img id="settingImage" src="" /> 
  22.                 <div class="ui-grid-a"> 
  23.                    <div class="ui-block-a"><div  data-role="button" id="takePhoto">take photo</div></div> 
  24.                   <div class="ui-block-b">  <div  data-role="button"  id="upload">upload</div></div> 
  25.                 </div> 
  26.                  
  27.             </div> 
  28.         </div> 
  29.         <script type="text/javascript" charset="utf-8" src="apis/camera.js"></script> 
  30.         <script type="text/javascript" charset="utf-8" src="apis/device.js"></script> 
  31.         <script type="text/javascript" charset="utf-8" src="apis/storage.js"></script> 
  32.     </body> 

上面就是頁(yè)面的代碼,就兩個(gè)DIV的page,學(xué)過(guò),jqm的朋友應(yīng)該對(duì)此毫無(wú)壓力了...

4,開(kāi)始寫(xiě)點(diǎn)jqm的事件js,寫(xiě)在模板那個(gè)head,自己的那個(gè)塊里面

  1. <script type="text/javascript"> 
  2.             //在頁(yè)面初始化的時(shí)候,利用phonegap初始化我們的應(yīng)用 
  3.             $('body').live("pageinit",function(){ 
  4.                init(); 
  5.             }); 
  6.             //為頁(yè)面添加swip 事件 
  7.             $("#home").live("pageinit",function(){ 
  8.                 //當(dāng)我們向左滑動(dòng)的時(shí)候,進(jìn)入setting頁(yè)面 
  9.                 $('#homeContent').bind("swipeleft",function(){ 
  10.                   $.mobile.changePage('#setting', { transition: "fade"}); 
  11.                 }); 
  12.  
  13.             }); 
  14.             $('#setting').live("pageinit",function(){ 
  15.                 //顯示頭像圖片 
  16.                 var saveImage = kget("image"); 
  17.                 if(saveImage){ 
  18.                     //console.log("have image"+saveImage); 
  19.                     var cameraImage = document.getElementById('settingImage'); 
  20.                     cameraImage.style.visibility = 'visible'
  21.                     cameraImage.src = "data:image/jpeg;base64," + saveImage; 
  22.  
  23.                 } 
  24.                 //當(dāng)我們向右滑動(dòng)的時(shí)候,回到主頁(yè) 
  25.                 $('#settingContent').bind("swiperight",function(){ 
  26.                     $.mobile.changePage('#home',{ transition: "fade"}); 
  27.                 }); 
  28.                 //進(jìn)行拍照 
  29.                 $('#takePhoto').bind("tap",function(){ 
  30.                     take_pic(); 
  31.                 }); 
  32.             }); 
  33.  
  34.         </script> 

這塊代碼的就要有一點(diǎn)熟悉jqm的人寫(xiě)好了,有啥不懂的先看一下jqm的官方文檔吧...

5,寫(xiě)了這么久,都沒(méi)怎么用到phonegap,接下來(lái)就是phonegap大展身手的時(shí)刻到了..

phonegap的照片類(lèi)型

還記得我們?cè)赿evices.js定義的兩個(gè)變量嗎?

  1. //這個(gè)是設(shè)置圖片是調(diào)用攝像頭還是,本機(jī)相冊(cè),默認(rèn)是調(diào)用攝像頭 
  2. //更多參見(jiàn)官方文檔 
  3. pictureSource=navigator.camera.PictureSourceType; 
  4. //這個(gè)是,當(dāng)phonegap 獲取圖片的時(shí)候,我們希望獲取的是路徑?還是 
  5. //給予base64編碼的圖像格式 
  6. destinationType=navigator.camera.DestinationType; 

以上就是等下,可能要用到的參數(shù)介紹

新建一個(gè)camera.js,

  1. function take_pic() { 
  2.     navigator.camera.getPicture(onPhotoDataSuccess, function(ex) { 
  3.         alert("Camera Error!"); 
  4.     }, { 
  5.     //這里的更多設(shè)置參數(shù)參見(jiàn)官方文檔 
  6.         quality : 50, 
  7.     targetWidth: 320, 
  8.     targetHeight: 240, 
  9.     //用data_url,而不用file_url的原因是,file_url在不同平臺(tái)有差異 
  10.     //不好編寫(xiě),而用data_url就可以不考慮這個(gè),加上,拍張圖片,不要太好的話,就幾十k存到數(shù)據(jù)庫(kù)里面也沒(méi)多慢.. 
  11.     destinationType:destinationType.DATA_URL 
  12.         }); 
  13. function onPhotoDataSuccess(imageData) { 
  14.     console.log("* * * onPhotoDataSuccess"); 
  15.     var cameraImage = document.getElementById('cameraImage'); 
  16.     cameraImage.style.visibility = 'visible'
  17.     //把圖片存進(jìn)數(shù)據(jù)庫(kù)里面 
  18.     kset("image",imageData); 
  19.    cameraImage.src = "data:image/jpeg;base64," + imageData; 
  20.      

接下來(lái),新建一個(gè)storage.js,用來(lái)簡(jiǎn)單封裝storage的api

  1. function kset(key, value){ 
  2.     console.log("key"+key+"value"+value); 
  3.     window.localStorage.setItem(key, value); 
  4.  
  5. function kget(key){ 
  6.     console.log(key); 
  7.     return window.localStorage.getItem(key); 
  8.  
  9. function kremove(key){ 
  10.     window.localStorage.removeItem(key); 
  11.  
  12. function kclear(){ 
  13.     window.localStorage.clear(); 
  14.  
  15. //測(cè)試更新方法 
  16. function kupdate(key,value){ 
  17.     window.localStorage.removeItem(key); 
  18.     window.localStorage.setItem(key, value); 

以上就是這次的內(nèi)容了.

責(zé)任編輯:佚名 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2012-05-14 17:10:50

iOS

2012-05-13 13:15:54

IOS

2009-05-11 09:15:20

MozillaPrism瀏覽器

2013-11-12 10:15:45

App翻譯本地化

2012-06-08 10:48:31

商務(wù)社交

2011-05-30 17:11:08

測(cè)試策略

2011-05-25 10:13:09

WordPressJavaScript

2009-05-11 09:40:10

PrismMozilla本地化

2023-09-26 18:16:57

2011-05-26 17:28:48

軟件本地化測(cè)試

2013-08-07 15:03:26

2013-03-27 09:50:53

HTML5游戲Android開(kāi)發(fā)

2014-06-19 10:26:15

Mobile AppWeb App

2022-09-21 11:51:26

模塊化應(yīng)用

2017-11-30 14:44:41

語(yǔ)言代碼文件

2010-03-09 09:33:04

Windows Emb

2025-02-21 15:56:42

DeepSeekRAGAI

2025-02-18 00:04:00

DeepSeek模型ChatGPT

2011-06-08 17:07:55

本地化測(cè)試

2020-09-21 08:34:28

數(shù)據(jù)中心
點(diǎn)贊
收藏

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