Cordova入門系列(二)分析第一個helloworld項目

版權聲明:本文爲博主原創文章,轉載請註明出處javascript

 

 

  上一章咱們介紹瞭如何建立一個cordova android項目,這章咱們介紹一下建立的那個helloworld項目的代碼,分析其運行。css

 

MainActivity.javahtml

  咱們已經將MainActivity導入到了eclipse中。打開scr下com.example.hello下的MainActivity.java。  java

//MainActivity繼承了CordovaActivity
public class MainActivity extends CordovaActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set by <content src="index.html" /> in config.xml
 loadUrl(launchUrl); } }

  學過安卓的都知道,Activity在啓動的時候會首先調用onCreate方法。android

  loadUrl(launchUrl);會在當前的WebView中去加載首頁,固然這個首頁是咱們本身配置的,在res/xml/config.xml中。<content src="index.html" />。這個路徑都是指的assets/www下的路徑。
api

  這樣這個app啓動的時候會首先調用這個MainActivity(固然這是在AndroidManifest.xml中配置的),而後Activity啓動的時候會將index.html加載在其WebView中,而後咱們就看到了Cordova的頁面。app

 

index.htmleclipse

  咱們再來看看index.html中都有什麼內容。ide

<html>
    <head>
        <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
        <meta name="format-detection" content="telephone=no">
        <meta name="msapplication-tap-highlight" content="no">
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
        <link rel="stylesheet" type="text/css" href="css/index.css">
        <title>Hello World</title>
    </head>
    <body>
        <div class="app">
            <h1>Apache Cordova</h1>
            <div id="deviceready" class="blink">
                <p class="event listening">Connecting to Device</p>
                <p class="event received">Device is Ready</p>
            </div>
        </div>
        <script type="text/javascript" src="cordova.js"></script>
        <script type="text/javascript" src="js/index.js"></script>
    </body>
</html>  

  <script type="text/javascript" src="cordova.js"></script>函數

  <script type="text/javascript" src="js/index.js"></script>

  在顯示這個index頁面的時候,會加載兩個js文件。cordova.js就是cordova的api,調用原生內容用的,至關於jar包。

 

index.js

  再看這個index.js。

var app = { // 初始化方法,會調用綁定事件的方法
    initialize: function() { this.bindEvents(); }, // 綁定事件的方法,事件能夠是這些:
    // 'load', 'deviceready', 'offline', and 'online'.
    //該事件是在 cordova 載入完成後發生的事件,它表示cordova 加載完成並準備訪問,yourCallbackFunction,至關於程序的入口功能
    bindEvents: function() { document.addEventListener('deviceready', this.onDeviceReady, false); }, // deviceready 後事件處理
    onDeviceReady: function() { app.receivedEvent('deviceready'); },
// 事件處理,更新DOM,改變兩個元素的css receivedEvent: function(id) { var parentElement = document.getElementById(id); var listeningElement = parentElement.querySelector('.listening'); var receivedElement = parentElement.querySelector('.received'); listeningElement.setAttribute('style', 'display:none;'); receivedElement.setAttribute('style', 'display:block;'); console.log('Received Event: ' + id); } }; //調用初始化方法 app.initialize();

  加載index.js以後,程序會首先調用初始化方法,初始化的時候會去綁定事件監聽:document.addEventListener('deviceready', this.onDeviceReady, false);

deviceready事件,該事件是在 cordova 載入完成後發生的事件,它表示cordova 加載完成並準備訪問,你傳進去的回調函數,至關於程序的入口函數。

  當cordova準備好的時候,會去首先執行你傳進去的回調函數,這裏是onDeviceReady()。這個方法會改變DOM元素的css樣式。

 

  最終效果就是,當cordova沒有加載完的時候,頁面上Apache Cordova下面那裏顯示的是:Connecting to Device(背景是灰色)。加載完以後,cordova準備好以後,原來顯示的消失,如今顯示的是:Device is Ready(背景是綠色)

相關文章
相關標籤/搜索