Android WebView 加载网页
在开发Android平台的互联网应用时,经常会使用到WebView,好处主要有两个,一是可以更改要展现的内容(包括样式),二是可以实现部分功能的跨平台,下面我介绍几种常用写法和区别,如下:
1.加载html代码方式有loadData()和loadDataWithBaseURL():
loadData()或loadDataWithBaseURL()加载一段HTML代码片段。loadUrl()的使用大家应该都没有什么问题,但是loadData()和loadDataWithBaseURL()在使用上的差异可能有些人还不太清楚。
首先,从方法的定义来看:
public void loadData (String data, String mimeType, String encoding) public void loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl)
loadDataWithBaseURL()比loadData()多两个参数,可以指定HTML代码片段中相关资源的相对根路径,也可以指定历史Url。两个方法的其余三个参数相同。
其次,两个方法加载的HTML代码片段有些不同,loadData()中的html data中不能包含’#’, ‘%’, ‘\’, ‘?’四中特殊字符,这就为我们内嵌css等制造了些许麻烦,因为css中经常用’#’, ‘%’等字符,需要如何处理呢?我们需要用UrlEncoder编码为%23, %25, %27, %3f 。
loadDataWithBaseURL代码例子如下写法:
- StringBuilder data = new StringBuilder(“<html><body bgcolor=\”#F2F6F8\”>”);
- int size = paperList.size();
- for(int i = 0;i < size;i++){
- if(!StringUtils.isEmpty(paperList.get(i).getFilePath())){
- data.append(“<center>”).append(“<img src = \”file://”+paperList.get(i).getFilePath()+”\”>”).append(“</center><br>”);
- }
- data.append(“<center>”).append(“<font color=\”#000000\”>”+paperList.get(i).getContent()+”</font>”).append(“</center><br><br>”);
- }
- data.append(“</body></html>”);
- preWebView.loadDataWithBaseURL(“”, data, “text/html”, “UTF-8″,””);
- /**
- * 显示本地图片和文字混合的Html内容
- */
- private void localHtmlImage() {
- try {
- String data = “<HTML>在模拟器 2.1 上测试,这是<IMG src=\”APK’>file:///android_asset/igg.jpg\”/>APK里的图片”;
- // SDK1.5本地文件处理(不能显示图片)
- //MyWebView.loadData(URLEncoder.encode(data, encoding), mimeType, encoding);
- // SDK1.6及以后版本
- //MyWebView.loadData(data, mimeType, encoding);
- // 本地文件处理(能显示图片)
- MyWebView.loadDataWithBaseURL(null, data, mimeType, encoding, null);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
2.加载本地html文件代码方式有loadUrl():
- /**
- * 显示本地图片文件
- */
- private void localImage() {
- try {
- // 本地文件处理
- String str = “file:///android_asset/icon.png”;
- MyWebView.loadUrl(str);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- /**
- * 显示本地网页文件
- */
- private void localHtml() {
- try {
- // 本地文件处理(如果文件名中有空格需要用+来替代)
- MyWebView.loadUrl(“file:///android_asset/test.html”);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
3.加载在线网页html代码方式有loadUrl():
- /**
- * 直接网页显示
- */
- private void webHtml() {
- try {
- MyWebView.loadUrl(“http://www.google.com”);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- /**
- * 直接网络图片显示
- */
- private void webImage() {
- try {
- MyWebView .loadUrl(“http://www.google.com.hk/intl/zh-CN/images/logo_cn.gif”);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }