WebView(网络视图)能加载显示网页。
1.1 布局文件中
<WebView
android:id="@+id/webView1"
android:layout_width="match_parent"
android:layout_height="match_parent" />
1.2java中设置加载页面
**1.2.1 loadUrl 方法直接加载html页面
WebView webview = (WebView) findViewById(R.id.webView1);
webview.loadUrl("http://www.studyyoun.com");
webView.loadUrl("file:///android_asset/example.html");
*1.2.2 loadData 方法直接加载String类型的Html数据
使用loadData方法来加载String类型的Html数据,会出现乱码,这是因为String 类型的数据主要是unicode编码,
而webview 一般使用的是utf-8编码方式 ,所以在使用loadData方法来加载数据时要指定编码方式
String content = "";
webView.loadData(content, “text/html”, “UTF-8”) ;
使用loadData方法来加载 html数据中不能包含'#‘, ’%‘, ’\‘, ’?‘四中特殊字符,
出现这种字符就会出现解析错误,显示找不到网页还有部分html代码。因为css中经常用’#‘, ’%‘等字符,
所以大部分网页会出现解析错误,需要如何处理呢?我们需要用UrlEncoder编码为%23, %25, %27, %3f 。
也就是说在使用上述方法来加载 页面数据的时候 有可能会出现解析异常
可以使用以下以下加载方式来解决这个问题,但是显示效果不太好,就是颜色排版效果也无法显示出来了
String content = "";
webView.loadData(URLEncoder.encode(content, "utf-8"), "text/html", "utf-8")
*1.2.3 loadDataWithBaseURL 方法直接加载String类型的Html数据
void loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl)
loadDataWithBaseURL()比loadData()多两个参数,
可以指定HTML代码片段中相关资源的相对根路径,也可以指定历史Url,其余三个参数相同。
这里主要注意参数baseUrl,baseUrl指定了你的data参数中数据是以什么地址为基准的,
因为data中的数据可能会有超链接或者是image元素,而很多网站的地址都是用的相对路径,
如果没有baseUrl,webview将访问不到这些资源
String body ="示例:这里有个img标签,地址是相对路径<img
src='/case_picture/webview/android_webview_base_1.png"' />";
mWebView.loadDataWithBaseURL("http://www.studyyoun.com", body, "text/html", "utf-8",null);
如果baseUrl没有指定为http:
也就是说加载的图片的完整路径是baseUrl+图片中的地址。
String body ="... ... ... ";
mWebView.loadDataWithBaseURL(null, body, "text/html", "utf-8",null);