phoneGap入門實戰
What is PhoneGap?
PhoneGap是一個用基於HTML5的移動應用前端開發框架,使用HTML+CSS+JavaScript,再通過PhoneGap就可以快速建立APP了。
PhoneGap能讓你只使用的簡單的Web技術即可獲得移動裝置的原生特性,如攝像頭、加速器、指南針。
PhoneGap是完全開放原始碼的,你可以通過編寫元件,實現任何原生裝置特性的擴充套件。之後還可以通過PhoneGap打包APP,這樣編寫一次基礎程式碼就可以將APP部署到多個移動平臺上。
優缺點
PnoneGap的優點
1.跨平臺
PhoneGap目前支援的移動平臺有: Android, iOS, Windows Phone、 Windows 8、 Firefox OS、 Amazon Fire OS、 BlackBerry 10、 Ubuntu、Tizen。(還有誰比我牛呢!)
2.價效比高,開發難度低
只要會HTML+CSS+JS,你就能開發在多達8個移動平臺上執行的App, 還有比這更具價效比的技術嗎?
相信會HTML的前端的開發人員,應該是比任何其它一種開發語言的人要多得多吧。不過伺服器端開發,還是要掌握一門其它語言像PHP、Java、.net、Ruby還是Python,這個就沒有限制了。但是,相容性越強的技術,成本越低,效能越差;相容性越差的技術,成本越高,效能越好。
PhoneGap的不足
1.執行效率
PhoneGap的執行,依賴於移動裝置上的內建瀏覽器的Webkit, 所以執行速度上自然是比原生的App慢。
2.不能支援全部的系統API
由於要支援多平臺, 所以如果一些平臺上獨有的API, 在PhoneGap上就有可能不能得到及時的支援。
建立專案的步驟
前面我們已經瞭解了一些PhoneGap的部分內容,那怎樣來建立一個PhoneGap的專案呢,我們將在這節課程中為大家來介紹。
我們可以通過命令列來建立專案。首先建立一個資料夾,然後可以通過以下命令來建立專案。例如建立一個名為project的專案,如下程式碼:
phonegap create project com.example.hello HelloWorld
phonegap create:建立專案的命令; project:專案目錄名稱; com.example.hello:專案內部包名; HelloWorld:專案名稱, 打包出的安裝程式安裝後顯示的名稱;
2.建立命令完成後,我們轉到專案的目錄下,然後新增phonegap外掛,我們可以通過以下命令來新增:
phonegap plugin add <外掛名稱|外掛地址>
例如,我們要在專案中新增網路的外掛,可用如下命令:
cd project
phonegap plugin add cordova-plugin-network-information
3.PhoneGap生成android專案,我們可用以下命令:
phonegap build android
如果想執行到IOS系統,則可以用以下命令:
phonegap build ios
經過以上三步一個PhoneGap專案就完成了,然後就可以把我們編譯好的apk檔案,下載到手機或模擬器來看執行效果了。
ps:本文中所講的內容都是基於android平臺。
專案
我們就帶大家來感受一下建立一個自己的phonegap程式,實現功能很簡單就是點選返回按鈕時,彈出“hello world”。
1.在系統中,首先轉到root目錄,這就是我們要建立專案的目錄。如下程式碼:
cd /
cd root
2.轉到root目錄後,然後就可以通過phonegap create命令來建立專案了。我們建立一個專案名為project的專案。如下程式碼:
phonegap create project com.example.hello HelloWorld
建立完成後的目錄結構如下:
3.建立命令完成後,我們轉到project目錄下,然後可以去新增要用到的外掛,如網路,通訊錄等。如下命令:
cd project
phonegap plugin add cordova-plugin-network-information
phonegap plugin add cordova-plugin-contacts
由於所建立的專案沒有用到外掛,所以不用新增。
4.外掛新增完成以後,就可以在建立的目錄中,進入www目錄下,然後對index.html進行編輯,在這裡面實現點選返回按鈕時,彈出“hello world”,儲存檔案。如下程式碼:
<script type="text/javascript" charset="utf-8">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
document.addEventListener("backbutton", onBackKeyDown, false);
}
// 處理後退按鈕操作
function onBackKeyDown() {
alert("hello world");
}
</script>
5.在命令列中,通過如下命令,使我們的專案執行到android平臺,並生成apk檔案。如下程式碼:
phonegap build android
由於我們在網路上進行編譯並且是第一次,所以用時會比較長,等編譯完成後,再編譯就比較快了。
好了,現在我們的第一個phonegap程式就完成了,下載到我們手機中,然後安裝開啟,去試一試吧。
理解事件
事件是可以被控制元件識別的操作,如按下確定按鈕,選擇某個單選按鈕或者核取方塊。每一種控制元件有自己可以識別的事件,如窗體的載入、單擊、雙擊等事件,編輯框(文字框)的文字改變事件,等等。對於我們操作手機也是一樣,點選後退按鈕、按下Home鍵、電池電量低等等。
事件有系統事件和使用者事件。系統事件由系統激發,如時間每隔24小時,銀行儲戶的存款日期增加一天。使用者事件由使用者激發,如使用者點選按鈕,在文字框中顯示特定的文字。事件驅動控制元件執行某項功能。
觸發事件的物件稱為事件傳送者;接收事件的物件稱為事件接收者。
在本問將簡單的講解一些PhoneGap提供的一些事件的API,如deviceready、backbutton、menubutton等。
deviceready
該事件是在PhoneGap載入完成後發生的事件,相當於程式的入口。事件的註冊形式為:
document.addEventListener("deviceready", yourCallbackFunction, false);
其中yourCallbackFunction為回撥函式,我們以後要處理的操作都在這個函式裡。
通常情況下,我們希望在HTML檔案的DOM載入完畢後使用document.addEventListener附加一個事件監聽器。
<script type="text/javascript" charset="utf-8">
// 當PhoneGap載入完畢後呼叫onDeviceReady回撥函式
// 此時,該檔案已載入完畢但phonegap.js還沒有載入完畢。
// 當PhoneGap載入完畢並開始和本地裝置進行通訊,
// 就會觸發“deviceready”事件。
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap載入完畢,現在可以安全地呼叫PhoneGap方法
function onDeviceReady() {
// 現在可以安全使用PhoneGap API,如後面要講的backbutton
alert("deviceready");
}
ps:該事件在每個PhoneGap程式中都會用到,必不可少的!
backbutton
PhoneGap攔截返回鍵,這個功能是當使用者按下返回鍵時事件觸發。事件註冊形式如下:
document.addEventListener("backbutton", yourCallbackFunction, false);
如果需要在Android系統上過載預設返回按鈕的行為,可以通過註冊一個事件監聽器來監聽“backbutton”事件。它不再需要呼叫任何其他方法來過載返回按鈕行為,現在只需要為“backbutton”事件註冊一個事件監聽器。
通常情況下,需要在接收到PhoneGap的“deviceready”事件後,使用document.addEventListener來附加該事件監聽器。
<script type="text/javascript" charset="utf-8">
// 當PhoneGap載入完畢後呼叫onDeviceReady回撥函式
// 此時,該檔案已載入完畢但phonegap.js還沒有載入完畢。
// 當PhoneGap載入完畢並開始和本地裝置進行通訊,
// 會觸發“deviceready”事件
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap is loaded and it is now safe to make calls PhoneGap methods
function onDeviceReady() {
// 註冊回退按鈕事件監聽器
document.addEventListener("backbutton", onBackKeyDown, false);
}
// 處理後退按鈕操作
function onBackKeyDown() {
//在這裡面寫我們自己的程式碼
}
</script>
menubutton
PhoneGap攔截選單鍵,這個功能是當使用者按下選單鍵時事件觸發。事件註冊形式如下:
document.addEventListener("menubutton", yourCallbackFunction, false);
如果你需要在Android系統上過載預設選單按鈕的行為,可以通過註冊一個事件監聽器來監聽“menubutton”事件。通常情況下,你需要在接受到PhoneGap的“deviceready”事件後,使用document.addEventListener來附加該事件監聽器。
<script type="text/javascript" charset="utf-8">
// 當PhoneGap載入完畢後呼叫onDeviceReady回撥函式
// 此時,該檔案已載入完畢但phonegap.js還沒有載入完畢。
// 當PhoneGap載入完畢並開始和本地裝置進行通訊,
// 會觸發“deviceready”事件
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap載入完畢,現在可以安全地呼叫PhoneGap方法
function onDeviceReady() {
// 註冊選單按鈕事件監聽器
document.addEventListener("menubutton", onMenuKeyDown, false);
}
// 處理選單按鈕操作
function onMenuKeyDown() {
//在這裡面寫我們自己的程式碼
}
</script>
更多的內容如通訊錄、檔案、媒體、通知等操作內容以及線上的練習可以訪問: http://www.hubwiz.com/course/563180221bc20c980538e8b4/
相關文章
- Kafka實戰-入門Kafka
- ElasticSearch實戰-入門Elasticsearch
- podman 入門實戰
- Flutter For Web入門實戰FlutterWeb
- React實戰入門指南React
- 逆向入門分析實戰(二)
- 機器學習入門實戰疑問機器學習
- Locust 從入門到實戰
- Linux入門到實戰Linux
- Gin + GORM 入門到實戰GoORM
- Redis 從入門到實戰Redis
- metaq入門部署到實戰
- Systemd 入門教程:實戰篇
- shiro實戰系列(二)之入門實戰續
- webpack 快速入門 系列 —— 實戰一Web
- Docker從入門到實戰pdfDocker
- 滲透測試入門實戰
- Gulp4.0入門和實戰
- Docker實戰-從入門到跑路Docker
- React.js入門與實戰ReactJS
- Pulsar 入門實戰(3)--安裝
- ElasticSearch實戰系列六: Logstash快速入門和實戰Elasticsearch
- Uni-app從入門到實戰APP
- GraphQL搭配MongoDB入門專案實戰MongoDB
- 初學者的機器學習入門實戰教程!機器學習
- 微信小程式入門到實戰(三)微信小程式
- Spring Security 入門原理及實戰Spring
- 深度學習:TensorFlow入門實戰深度學習
- OpenFaaS實戰之二:函式入門函式
- 機器學習PAI快速入門與業務實戰機器學習AI
- Docker入門實戰 (四) - Docker NetworkDocker
- Pytorch實戰入門(一):搭建MLPPyTorch
- Android中的JNI入門實戰Android
- 《Flink入門與實戰》簡介
- 微信小程式入門到實戰(二)微信小程式
- 微信小程式入門到實戰(一)微信小程式
- React Native入門-實戰解析(上)React Native
- MySQL入門學習之——實戰XtraBackupMySql