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

Hybrid App 開(kāi)發(fā)初探:使用 WebView 裝載頁(yè)面

移動(dòng)開(kāi)發(fā)
Hybrid App 是混合模式應(yīng)用的簡(jiǎn)稱,兼具 Native App 和 Web App 兩種模式應(yīng)用的優(yōu)勢(shì),開(kāi)發(fā)成本低,擁有 Web 技術(shù)跨平臺(tái)特性。目前大家所知道的基于中間件的移動(dòng)開(kāi)發(fā)框架都是采用的 Hybrid 開(kāi)發(fā)模式,例如國(guó)外的 PhoneGap、Titanium、Sencha,還有國(guó)內(nèi)的 AppCan、Rexsee 等等。Hybrid App 開(kāi)發(fā)模式正在被越來(lái)越多的公司和開(kāi)發(fā)者所認(rèn)同,相信將來(lái)會(huì)成為主流的移動(dòng)應(yīng)用開(kāi)發(fā)模式。

Hybrid App 是混合模式應(yīng)用的簡(jiǎn)稱,兼具 Native App 和 Web App 兩種模式應(yīng)用的優(yōu)勢(shì),開(kāi)發(fā)成本低,擁有 Web 技術(shù)跨平臺(tái)特性。目前大家所知道的基于中間件的移動(dòng)開(kāi)發(fā)框架都是采用的 Hybrid 開(kāi)發(fā)模式,例如國(guó)外的 PhoneGap、Titanium、Sencha,還有國(guó)內(nèi)的 AppCan、Rexsee 等等。Hybrid App 開(kāi)發(fā)模式正在被越來(lái)越多的公司和開(kāi)發(fā)者所認(rèn)同,相信將來(lái)會(huì)成為主流的移動(dòng)應(yīng)用開(kāi)發(fā)模式。

Hybrid App 融合 Web App 的原理就是嵌入一個(gè)WebView組件,可以在這個(gè)組件中載入頁(yè)面,相當(dāng)于內(nèi)嵌的瀏覽器,代碼如下:

  1. import android.app.Activity; 
  2. import android.os.Bundle; 
  3. import android.webkit.WebSettings; 
  4. import android.webkit.WebView; 
  5.   
  6. public class AActivity extends Activity{ 
  7.       
  8.     @Override 
  9.     public void onCreate(Bundle savedInstanceState) { 
  10.         super.onCreate(savedInstanceState); 
  11.         // 創(chuàng)建WebView 
  12.         WebView webView= new WebView(this); 
  13.         // 切換到內(nèi)容視圖 
  14.         setContentView(webView); 
  15.         // 獲取WebView配置 
  16.         WebSettings ws = webView.getSettings(); 
  17.         // 啟用JavaScript 
  18.         ws.setJavaScriptEnabled(true); 
  19.         // 載入assets目錄下的一個(gè)頁(yè)面 
  20.         webView.loadUrl("file:///android_asset/www/BoBox/index.html"); 
  21.     } 

還有另一種引入方式是在布局文件中添加 WebView 組件,代碼如下:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent">  
  6.        
  7.     <WebView   
  8.         android:layout_width="fill_parent"  
  9.         android:layout_height="wrap_content"  
  10.         android:id="@+id/webview"  
  11.         />  
  12.            
  13. </LinearLayout> 
  1. import android.app.Activity; 
  2. import android.os.Bundle; 
  3. import android.webkit.WebSettings; 
  4. import android.webkit.WebView; 
  5.   
  6. public class BActivity extends Activity{ 
  7.   
  8.     @Override 
  9.     public void onCreate(Bundle savedInstanceState) { 
  10.         super.onCreate(savedInstanceState); 
  11.         setContentView(R.layout.webview); 
  12.         // 查找WebView 
  13.         WebView webView = (WebView) findViewById(R.id.webview); 
  14.         // 獲取WebView配置 
  15.         WebSettings ws = webView.getSettings(); 
  16.         // 啟用JavaScript 
  17.         ws.setJavaScriptEnabled(true); 
  18.         // 在載入assets目錄下的一個(gè)頁(yè)面 
  19.         webView.loadUrl("file:///android_asset/www/index.html"); 
  20.     } 

WebView 還有一個(gè)非常重要的方法——addJavascriptInterface,可以用來(lái)實(shí)現(xiàn) Java 程序和 JavaScript 程序的相互調(diào)用,代碼如下:

  1. webView.addJavascriptInterface(new Object(){ 
  2.     public void clickOnAndroid(){ 
  3.         mHandler.post(new Runnable(){ 
  4.             public void run(){ 
  5.                 webView.loadUrl("javascript:wave()"); 
  6.             } 
  7.         }); 
  8.     } 
  9. }, "demo"); 

頁(yè)面代碼如下:

  1. <script> 
  2.     function wave() { 
  3.         document.getElementById("id").innerHTML = "Hello World!"
  4.     } 
  5. </script> 
  6. </head> 
  7. <body> 
  8.     <div> 
  9.         <a href="#" id="demo" onclick="window.demo.clickOnAndroid()">Click Me</a> 
  10.     </div> 
  11. </body> 
  12. </html> 

這樣,當(dāng)你點(diǎn)擊頁(yè)面上 Click Me 按鈕的時(shí)候就會(huì)調(diào)用 Java 代碼中的 clickOnAndroid 函數(shù),clickOnAndroid 函數(shù)中又調(diào)用頁(yè)面中的 wave 方法。需要注意的是:這個(gè)接口在 Android 2.3 版本的模擬器中運(yùn)行會(huì)導(dǎo)致 WebView 崩潰,目前還沒(méi)有修復(fù)。這是一個(gè)非常簡(jiǎn)單的演示 Java 和 JavaScript 相互調(diào)用的例子,在實(shí)際應(yīng)用中可以在頁(yè)面調(diào)用的 clickOnAndroid 函數(shù)中再調(diào)用攝像頭、通訊錄、通知提醒等設(shè)備功能。

責(zé)任編輯:閆佳明 來(lái)源: cnblogs
相關(guān)推薦

2014-12-17 10:29:59

混合應(yīng)用Hybrid App開(kāi)發(fā)實(shí)戰(zhàn)

2014-12-17 10:12:06

HybridAppFramewor頁(yè)面布局

2013-03-19 09:08:42

Hybrid App

2013-12-16 15:07:59

NativeHybrid開(kāi)發(fā)移動(dòng)

2014-12-17 10:43:01

Hybrid App平臺(tái)開(kāi)發(fā)

2014-12-18 13:40:16

Web AppHybrid AppNative App

2013-09-04 15:07:06

移動(dòng)應(yīng)用設(shè)計(jì)

2014-05-21 15:13:40

AppCanHybrid

2014-11-28 10:31:07

Hybrid APP

2011-08-23 17:52:39

LUAWeb 開(kāi)發(fā)

2012-05-30 09:22:56

Hybrid App助HTML5JavaScript

2012-06-05 09:06:52

HTML5Native AppHybrid App

2014-03-24 11:17:53

Hybrid App混合應(yīng)用

2014-09-22 15:14:04

2012-06-28 15:47:31

Web AppHybrid AppHTML5

2010-08-04 10:17:17

Android開(kāi)發(fā)WebView組件

2014-12-17 14:21:56

Hybrid App框架工具

2011-06-16 10:25:29

AndroidAIR

2012-05-28 14:13:26

HTML5Web AppNative App

2017-01-15 18:32:39

Openresty架構(gòu)性能
點(diǎn)贊
收藏

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