android使用webwiew載入頁面使用示例(Hybrid App開發(fā))
Hybrid App 是混合模式應用的簡稱,兼具 Native App 和 Web App 兩種模式應用的優(yōu)勢,開發(fā)成本低,擁有 Web 技術(shù)跨平臺特性。目前大家所知道的基于中間件的移動開發(fā)框架都是采用的 Hybrid 開發(fā)模式,例如國外的 PhoneGap、Titanium、Sencha,還有國內(nèi)的 AppCan、Rexsee 等等。Hybrid App 開發(fā)模式正在被越來越多的公司和開發(fā)者所認同,相信將來會成為主流的移動應用開發(fā)模式。
Hybrid App 融合 Web App 的原理就是嵌入一個WebView組件,可以在這個組件中載入頁面,相當于內(nèi)嵌的瀏覽器,代碼如下:
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class AActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 創(chuàng)建WebView
WebView webView= new WebView(this);
// 切換到內(nèi)容視圖
setContentView(webView);
// 獲取WebView配置
WebSettings ws = webView.getSettings();
// 啟用JavaScript
ws.setJavaScriptEnabled(true);
// 載入assets目錄下的一個頁面
webView.loadUrl("file:///android_asset/www/BoBox/index.html");
}
}
還有另一種引入方式是在布局文件中添加 WebView 組件,代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/webview"
/>
</LinearLayout>
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class BActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
// 查找WebView
WebView webView = (WebView) findViewById(R.id.webview);
// 獲取WebView配置
WebSettings ws = webView.getSettings();
// 啟用JavaScript
ws.setJavaScriptEnabled(true);
// 在載入assets目錄下的一個頁面
webView.loadUrl("file:///android_asset/www/index.html");
}
}
WebView 還有一個非常重要的方法——addJavascriptInterface,可以用來實現(xiàn) Java 程序和 JavaScript 程序的相互調(diào)用,代碼如下:
webView.addJavascriptInterface(new Object(){
public void clickOnAndroid(){
mHandler.post(new Runnable(){
public void run(){
webView.loadUrl("javascript:wave()");
}
});
}
}, "demo");
頁面代碼如下:
<script>
function wave() {
document.getElementById("id").innerHTML = "Hello World!";
}
</script>
</head>
<body>
<div>
<a href="#" id="demo" onclick="window.demo.clickOnAndroid()">Click Me</a>
</div>
</body>
</html>
這樣,當你點擊頁面上 Click Me 按鈕的時候就會調(diào)用 Java 代碼中的 clickOnAndroid 函數(shù),clickOnAndroid 函數(shù)中又調(diào)用頁面中的 wave 方法。需要注意的是:這個接口在 Android 2.3 版本的模擬器中運行會導致 WebView 崩潰,目前還沒有修復。這是一個非常簡單的演示 Java 和 JavaScript 相互調(diào)用的例子,在實際應用中可以在頁面調(diào)用的 clickOnAndroid 函數(shù)中再調(diào)用攝像頭、通訊錄、通知提醒等設備功能。
相關(guān)文章
Android應用的Material設計中圖片的相關(guān)處理指南
這篇文章主要介紹了Android應用的Material設計中圖片的相關(guān)處理指南,除了介紹新的方法外文中還給出了一些設計標準樣例僅供參考,需要的朋友可以參考下2016-04-04Android使用SwipeListView實現(xiàn)類似QQ的滑動刪除效果
這篇文章主要介紹了Android使用SwipeListView實現(xiàn)類似QQ的滑動刪除效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-08-08Android RecyclerView詳解之實現(xiàn) ListView GridView瀑布流效果
RecyclerView 是Android L版本中新添加的一個用來取代ListView的SDK,它的靈活性與可替代性比listview更好2016-07-07Android開發(fā) -- 控件的顯示與隱藏 setVisibility View.VISIBLE View.INVISI
本文簡單介紹在Android開發(fā)中控件的顯示與隱藏幾種常見的屬性,給大家一個參考,希望對大家學習有所幫助。2016-06-06