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

WebView使用大全

2015-11-13 10:50 316 查看
转载请注明转自:noyet12的博客

博客原址:http://blog.csdn.net/u012975705/article/details/49814587

简单介绍

WebView是Android中能加载显示网页的控件,可以将其视为一个浏览器。在使用WebView之前必须在AndroidManifest.xml文件中添加权限:

<uses-permission android:name="android.permission.INTERNET" />


否则会出现Web page not available错误。

WebView的实现方式

在Android中WebView有两种实现方式:一是在要Activity中实例化WebView组件

WebView webView = new WebView(this);


二是在布局文件中声明WebView,然后在Activity中实例化WebView

<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"/>


webview = (WebView) findViewById(R.id.webview);


WebView基本设置的方法

/** 支持javascript */
webview.getSettings().setJavaScriptEnabled(true);
/** 设置可以支持缩放 */
webview.getSettings().setSupportZoom(true);
/** 设置出现缩放工具 */
webview.getSettings().setBuiltInZoomControls(true);
/** 扩大比例的缩放 */
webview.getSettings().setUseWideViewPort(true);
/** 清除浏览器缓存 */
webview.clearCache(true);
/** 自适应屏幕 */
webview.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
/** 优先使用缓存 *、
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
/** 不使用缓存: */
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);


WebView数据加载方法详解

(1)loadUrl()

直接加载网页。

使用方式:

//WebView加载web资源
webView.loadUrl("http://baidu.com");
//覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
/** 返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器 */
view.loadUrl(url);
return true;
}
});
/** 判断页面加载过程 */
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
/** 网页加载完成 */
} else {
/** 加载中 */
}
}
});


(2)loadData

用来装载URI格式的数据,但不能加载网络内容。

使用方式:

webview.loadData(content, "text/html", "utf-8")


在使用loadData方法加载数据的时候,有可能会出现乱码,这时候可以使用loadDataWithBaseURL方法来加载数据,能过避免中文乱码

(3)loadDataWithBaseURL

loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl)


在使用loadDataWithBaseURL时,需要注意的就是 baseUr:虽然API上写的是要传一个Url,但我在用时,发现传一个Url并不可以,我发现这个就是一个标志位,用来标志当前页面的Key值的,而historyUrl就是一个value值,在加载时,它会把baseUrl和historyUrl传到List列表中,当作历史记录来使用,当前进和后退时,它会通过baseUrl来寻找historyUrl的路径来加载historyUrl路径来加载历史界面,需要注意的就是history所指向的必须是一个页面,并且页面存在于SD卡中或程序中(assets),loadDataWithBaseURL,它本身并不会向历史记录中存储数据,要想实现历史记录,需要我们自己来实现。

一般使用方式:

webview.loadDataWithBaseURL(null, content, "text/html", "utf-8", null);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息