WebView简介(基本显示篇)

本文编辑整理自: 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 - 民主与科学
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值