注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

WebView简介(基本显示篇)  

2012-02-11 17:51:16|  分类: Android的UI开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
本文编辑整理自:http://developer.51cto.com/art/201008/216488.htm
51CTO曾经独家推荐过Android开发应用详解的专题,本文希望通过本次对WebView组件的使用讲解,可以让各位了解到WebView组件的详细使用:
一、网络内容
1、LoadUrl直接显示网页内容(单独显示网络图片)
比如:
webView.loadUrl("http://www.google.com");
2、LoadData显示中文网页内容(含空格的处理)
webView.loadData(URLEncoder.encode(data, encoding),"text/html", "utf-8");  
二、本地文件内容
比如:webView.loadUrl("file:///android_asset/test.html"); 
三、APK包内文件
1、LoadUrl显示APK中Html和图片文件
 webView.loadUrl("file:///android_asset/test.html");   
 webView.loadUrl("file:///android_asset/icon.png");   
对于APK本地文件应该存放在其Android工程的assets 文件中,url为file:///android_asset/开头的形式,
比如webView.loadUrl("file:///android_asset/XX.html"),
四、使用loadDataWithBaseURL进行本地数据与网络文件的混合显示。
我可以在本地数据中引用一些网络文件,这就可以让本地数据与网络文件的混合显示 。
在引用文件时,可以采用觉得URL,也可以使用相对URL。使用相对URL时,请采用loadDataWithBaseURL,以引用文件的指明起始地址。
示例1
                String baseURL="http://img6.ph.126.net";
                String data="Here is a gorgeous girl <img src='hBiG96B8egigBULxUWcOpA==/109212290980771276.jpg'>";
                webView.loadDataWithBaseURL(baseURL, data,"text/html",  "utf-8", ""); 
运行结果见图二。
注意:需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。
  <uses-permission android:name="android.permission.INTERNET" />
res/layout/main.xml

Xml代码

    < ?xml version="1.0" encoding="utf-8"?>
    
    < LINEARLAYOUT android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">
    
    < WEBVIEW android:layout_height="fill_parent" android:layout_width="fill_parent" android:id="@+id/webview" />
    
    < /LINEARLAYOUT>
    
    < ?xml version="1.0" encoding="utf-8"?>
    
    < LINEARLAYOUT android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">
    
    < WEBVIEW android:layout_height="fill_parent" android:layout_width="fill_parent" android:id="@+id/webview" />
    
    < /LINEARLAYOUT>

    
    Example_webview.java

Java代码

    package cn.coolworks; 
    
    import java.net.URLEncoder; 
    
    import android.app.Activity; 
    
    import android.os.Bundle; 
    
    import android.webkit.WebView; 
    
    public class Example_webview extends Activity { 
    
    WebView webView; 
    
    final String mimeType = "text/html"; 
    
    final String encoding = "utf-8"; 
    
    /** Called when the activity is first created. */ 

    
    @Override 
    
    public void onCreate(Bundle savedInstanceState) { 
    
    super.onCreate(savedInstanceState); 
    
    setContentView(R.layout.main); 
    
    webView = (WebView) findViewById(R.id.webview); 
    
    webView.getSettings().setJavaScriptEnabled(true); 
    
    //webHtml(); 
     
    
    //webImage();
    
    //localHtmlZh();
    
    //localHtmlBlankSpace();
    
    //localHtml();
    
    // localImage(); 

    
    localHtmlImage(); 
    
    } 
    
    /** 
    
    * 直接网页显示 
    
    */ 

    
    private void webHtml() { 
    
    try { 
    
    webView.loadUrl("http://www.google.com"); 
    
    } catch (Exception ex) { 
    
    ex.printStackTrace(); 
    
    } 
    
    } 
    
    /** 
    
    * 直接网络图片显示 
    
    */ 

    
    private void webImage() { 
    
    try { 
    
    webView.loadUrl("http://www.gstatic.com/codesite/ph/images/code_small.png"); 
    
    } catch (Exception ex) { 
    
    ex.printStackTrace(); 
    
    } 
    
    } 
    
    /** 
    
    * 中文显示 
    
    */ 

    
    private void localHtmlZh() { 
    
    try { 
    
    String data = "测试含有 中文的Html数据"; 
    
    // utf-8编码处理(在SDK1.5模拟器和真实设备上都将出现乱码,SDK1.6上能正常显示) 
    
    //webView.loadData(data, mimeType, encoding); 
    
    // 对数据进行编码处理(SDK1.5版本) 

    
    webView.loadData(URLEncoder.encode(data, encoding), mimeType, encoding); 
    
    } catch (Exception ex) { 
    
    ex.printStackTrace(); 
    
    } 
    
    } 
    
    /** 
    
    * 中文显示(空格的处理) 
    
    */ 

    
    private void localHtmlBlankSpace() { 
    
    try { 
    
    String data = " 测试含有空格的Html数据 "; 
    
    // 不对空格做处理 
    
    webView.loadData(URLEncoder.encode(data, encoding), mimeType,  encoding); 
    
    //webView.loadData(data, mimeType, encoding); 
    
    // 对空格做处理(在SDK1.5版本中) 

    
    webView.loadData(URLEncoder.encode(data, encoding).replaceAll(   "\+", " "), mimeType, encoding); 
    
    } catch (Exception ex) { 
    
    ex.printStackTrace(); 
    
    } 
    
    } 
    
    /** 
    
    * 显示本地图片文件 
    
    */ 

    
    private void localImage() { 
    
    try { 
    
    // 本地文件处理(如果文件名中有空格需要用+来替代) 
    
    webView.loadUrl("file:///android_asset/icon.png"); 
    
    } catch (Exception ex) { 
    
    ex.printStackTrace(); 
    
    } 
    
    } 
    
    /** 
    
    * 显示本地网页文件 
    
    */ 

    
    private void localHtml() { 
    
    try { 
    
    // 本地文件处理(如果文件名中有空格需要用+来替代) 
    
    webView.loadUrl("file:///android_asset/test.html"); 
    
    } catch (Exception ex) { 
    
    ex.printStackTrace(); 
    
    } 
    
    } 
    
    /** 
    
    * 显示本地图片和文字混合的Html内容 
    
    */ 

    
    private void localHtmlImage() { 
    
    try { 
    
    String data = "测试本地图片和文字混合显示,这是APK里的图片"; 
    
    // SDK1.5本地文件处理(不能显示图片) 
    
    // webView.loadData(URLEncoder.encode(data, encoding), mimeType, 
    
    // encoding); 

    
    // SDK1.6及以后版本 
    
    // webView.loadData(data, mimeType, encoding); 
    
    // 本地文件处理(能显示图片) 
    
    webView.loadDataWithBaseURL("about:blank", data, mimeType, encoding, ""); 
    
    } catch (Exception ex) { 
    
    ex.printStackTrace(); 
    
    } 
    
    } 
    
    }


这就是WebView组件的使用详解,如果您对WebView组件及Android开发有什么新的使用心得可以发Email:zhousn@51cto.com,51CTO将与您一起分享!
图2
WebView详解(基本显示篇) - hubingforever - 民主与科学
 
  评论这张
 
阅读(2026)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017