您的位置:首页 > 移动开发

控件WebView的使用

2015-09-07 17:51 387 查看

1、概述

Android WebView在Android平台上是一个特殊的View,
他能用来显示网页,这个类可以被用来在你的app中仅仅显示一张在线的网页,还可以用来开发浏览器。WebView内部实现是采用渲染引擎来展示view的内容,提供网页前进后退,网页放大,缩小,搜索。在Android 4.3系统及其一下WebView内部采用Webkit渲染引擎,在Android 4.4采用chromium 渲染引擎来渲染View的内容。

A View that displays web pages. This class is the basis upon which you can roll your own web browser or simply
display some online content within your Activity. It uses the WebKit rendering engine to display web pages and includes methods to navigate forward and backward through a history, zoom in and out, perform text searches and more.

2、使用

使用时,主要注意两个方法:

setWebViewClient: 主要处理解析,渲染网页等浏览器做的事情

setWebChromeClient: 辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等

WebViewClient就是帮助WebView处理各种通知、请求事件的。

具体使用:

在AndroidManifest.xml设置访问网络权限:

<span style="font-size:18px;"><uses-permission android:name="android.permission.INTERNET"/></span>


控件:

<span style="font-size:18px;"><WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webView"
/></span>



a.加载本地html资源/web资源,

本地,

资源放在assets文件夹下:

webView = (WebView) findViewById(R.id.webView);
webView.loadUrl("file:///android_asset/example.html");


网络,

webView = (WebView) findViewById(R.id.webView);
webView.loadUrl("http://baidu.com");



b、设置webViewClient

需要重写自己的WebViewClient,通过setWebViewClient关联

package com.example.testopen;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
init();

}

private void init(){
webView = (WebView) findViewById(R.id.webView);
//WebView加载web资源
webView.loadUrl("http://baidu.com");
//覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
view.loadUrl(url);//用对应webView加载对应url内容进行显示
return true;
}
});
}

}


c、设置js相关

如果访问的页面中有Javascript,则webview必须设置支持Javascript

//启用支持javascript
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);


添加js交互:

webView.addJavascriptInterface(new Object() {

<span style="white-space:pre">			</span>// 打开照相机
@JavascriptInterface
public void openCamera(String path) {
pathAll = Tool.getPath(context) + "app_package/" + path;
WebTool webTool = WebTool.getInstance();
webTool.openCamera(path, activity);

}
}, "androidApi");


在java中处理js中的回调方法,使用的是 webView.loadUrl("javascript:locationCallBack()");

其中,locationCallBack()是js的一个方法。


另:

缓存,加载进度设置,见 /article/4795592.html

webView回调的详情,参见

http://tool.oschina.net/uploads/apidocs/android/reference/android/webkit/WebView.html
http://blog.csdn.net/typename/article/details/39030091
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: