加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Hybrid App 开发初探:使用 WebView 装载页面

发布时间:2020-12-14 13:12:47 所属栏目:百科 来源:网络整理
导读:http://www.cnblogs.com/lhb25/archive/2012/07/16/hybrid-app-developement.html Hybrid App 是混合模式应用的简称,兼具 Native App 和 Web App 两种模式应用的优势,开发成本低,拥有? Web ?技术跨平台特性。目前大家所知道的基于中间件的移动开发框架都

http://www.cnblogs.com/lhb25/archive/2012/07/16/hybrid-app-developement.html

Hybrid App 是混合模式应用的简称,兼具 Native App 和 Web App 两种模式应用的优势,开发成本低,拥有?Web?技术跨平台特性。目前大家所知道的基于中间件的移动开发框架都是采用的 Hybrid 开发模式,例如国外的?PhoneGap、Titanium、Sencha,还有国内的 AppCan、Rexsee 等等。Hybrid App 开发模式正在被越来越多的公司和开发者所认同,相信将来会成为主流的移动应用开发模式。

??

?

  Hybrid App 融合 Web App 的原理就是嵌入一个WebView组件,可以在这个组件中载入页面,相当于内嵌的浏览器,代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import? android.app.Activity;
android.os.Bundle;
android.webkit.WebSettings;
android.webkit.WebView;
?
public? class? AActivity extends? Activity{
?????
???? @Override
???? void? onCreate(Bundle savedInstanceState) {
???????? super .onCreate(savedInstanceState);
???????? // 创建WebView
???????? WebView webView= new? WebView( this );
// 切换到内容视图
setContentView(webView);
// 获取WebView配置
WebSettings ws = webView.getSettings();
// 启用JavaScript
ws.setJavaScriptEnabled( true );
// 载入assets目录下的一个页面
webView.loadUrl( "file:///android_asset/www/BoBox/index.html" );
???? }
}

  还有另一种引入方式是在布局文件中添加 WebView 组件,代码如下:

13
<? 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?
???????? "fill_parent"
"wrap_content"
android:id "@+id/webview"
???????? />
?????????
</ LinearLayout >
21
BActivity ?
setContentView(R.layout.webview);
// 查找WebView
WebView webView = (WebView) findViewById(R.id.webview);
// 获取WebView配置
WebSettings ws = webView.getSettings();
// 启用JavaScript
);
// 在载入assets目录下的一个页面
"file:///android_asset/www/index.html" );
}
  WebView 还有一个非常重要的方法——addJavascriptInterface,可以用来实现 Java 程序和 JavaScript 程序的相互调用,代码如下:

9
webView.addJavascriptInterface(
Object(){
clickOnAndroid(){
mHandler.post( Runnable(){
???????????? run(){
???????????????? "javascript:wave()" );
???????????? }
});
}
}, "demo" );

  页面代码如下:

12
script >
function wave() {
document.getElementById("id").innerHTML = "Hello World!";
}
>
head >
body >
div >
a? href "#"? id "demo"? onclick "window.demo.clickOnAndroid()" >Click Me</ a >
>
>
html >

  这样,当你点击页面上 Click Me 按钮的时候就会调用 Java 代码中的?clickOnAndroid 函数,clickOnAndroid 函数中又调用页面中的 wave 方法。需要注意的是:这个接口在 Android 2.3 版本的模拟器中运行会导致 WebView 崩溃,目前还没有修复。这是一个非常简单的演示 Java 和 JavaScript 相互调用的例子,在实际应用中可以在页面调用的?clickOnAndroid 函数中再调用摄像头、通讯录、通知提醒等设备功能。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

相关内容
推荐文章
站长推荐
热点阅读