Android——WebView组件的使用详解

来源:互联网 发布:淘宝外卖是什么平台 编辑:程序博客网 时间:2024/04/29 21:16

通过本专题的讲解可以了解到WebView组件的详细使用:

网络内容
1、LoadUrl直接显示网页内容(单独显示网络图片)
2、LoadData显示中文网页内容(含空格的处理)
APK包内文件
1、LoadUrl显示APK中Html和图片文件
2、LoadData(loadDataWithBaseURL)显示APK中图片和文字混合的Html内容

res/layout/main.xml
Xml代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>     
  2. <LINEARLAYOUT android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">     
  3. <WEBVIEW android:layout_height="fill_parent" android:layout_width="fill_parent" android:id="@+id/webview" />     
  4. </LINEARLAYOUT>     

 

Example_webview.java

 

Java代码  收藏代码
  1. package cn.coolworks;  
  2.   
  3. import java.net.URLEncoder;  
  4.   
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7. import android.webkit.WebView;  
  8.   
  9. public class Example_webview extends Activity {  
  10.     WebView webView;  
  11.     final String mimeType = "text/html";  
  12.     final String encoding = "utf-8";  
  13.   
  14.     /** Called when the activity is first created. */  
  15.     @Override  
  16.     public void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.main);  
  19.         webView = (WebView) findViewById(R.id.webview);  
  20.         webView.getSettings().setJavaScriptEnabled(true);  
  21.         //  
  22.         //webHtml();  
  23.         //  
  24.          //webImage();  
  25.         //  
  26.         //localHtmlZh();  
  27.         //  
  28.         //localHtmlBlankSpace();  
  29.         //  
  30.         //localHtml();  
  31.         //  
  32.         // localImage();  
  33.         //  
  34.          localHtmlImage();  
  35.     }  
  36.   
  37.     /** 
  38.      * 直接网页显示 
  39.      */  
  40.     private void webHtml() {  
  41.         try {  
  42.             webView.loadUrl("http://www.google.com");  
  43.         } catch (Exception ex) {  
  44.             ex.printStackTrace();  
  45.         }  
  46.     }  
  47.   
  48.     /** 
  49.      * 直接网络图片显示 
  50.      */  
  51.     private void webImage() {  
  52.         try {  
  53.             webView  
  54.                     .loadUrl("http://www.gstatic.com/codesite/ph/images/code_small.png");  
  55.         } catch (Exception ex) {  
  56.             ex.printStackTrace();  
  57.         }  
  58.     }  
  59.   
  60.     /** 
  61.      * 中文显示 
  62.      */  
  63.     private void localHtmlZh() {  
  64.         try {  
  65.             String data = "<!--l encoding="utf-8" version="1.-->测试含有  中文的Html数据";  
  66.             // utf-8编码处理(在SDK1.5模拟器和真实设备上都将出现乱码,SDK1.6上能正常显示)  
  67.             //webView.loadData(data, mimeType, encoding);  
  68.             // 对数据进行编码处理(SDK1.5版本)  
  69.              webView.loadData(URLEncoder.encode(data, encoding), mimeType,  
  70.              encoding);  
  71.         } catch (Exception ex) {  
  72.             ex.printStackTrace();  
  73.         }  
  74.     }  
  75.   
  76.     /** 
  77.      * 中文显示(空格的处理) 
  78.      */  
  79.     private void localHtmlBlankSpace() {  
  80.         try {  
  81.             String data = "      测试含有空格的Html数据    ";  
  82.             // 不对空格做处理  
  83.              webView.loadData(URLEncoder.encode(data, encoding), mimeType,  
  84.              encoding);  
  85.             //webView.loadData(data, mimeType, encoding);  
  86.             // 对空格做处理(在SDK1.5版本中)  
  87.              webView.loadData(URLEncoder.encode(data, encoding).replaceAll(  
  88.              "\\+"" "), mimeType, encoding);  
  89.         } catch (Exception ex) {  
  90.             ex.printStackTrace();  
  91.         }  
  92.     }  
  93.   
  94.     /** 
  95.      * 显示本地图片文件 
  96.      */  
  97.     private void localImage() {  
  98.         try {  
  99.             // 本地文件处理(如果文件名中有空格需要用+来替代)  
  100.             webView.loadUrl("file:///android_asset/icon.png");  
  101.         } catch (Exception ex) {  
  102.             ex.printStackTrace();  
  103.         }  
  104.     }  
  105.   
  106.     /** 
  107.      * 显示本地网页文件 
  108.      */  
  109.     private void localHtml() {  
  110.         try {  
  111.             // 本地文件处理(如果文件名中有空格需要用+来替代)  
  112.             webView.loadUrl("file:///android_asset/test.html");  
  113.         } catch (Exception ex) {  
  114.             ex.printStackTrace();  
  115.         }  
  116.     }  
  117.   
  118.     /** 
  119.      * 显示本地图片和文字混合的Html内容 
  120.      */  
  121.     private void localHtmlImage() {  
  122.         try {  
  123.             String data = "测试本地图片和文字混合显示,这是<IMG src='\"file:///android_asset/icon.png\"/'>APK里的图片";  
  124.             // SDK1.5本地文件处理(不能显示图片)  
  125.             // webView.loadData(URLEncoder.encode(data, encoding), mimeType,  
  126.             // encoding);  
  127.             // SDK1.6及以后版本  
  128.             // webView.loadData(data, mimeType, encoding);  
  129.             // 本地文件处理(能显示图片)  
  130.             webView.loadDataWithBaseURL("about:blank", data, mimeType,  
  131.                     encoding, "");  
  132.         } catch (Exception ex) {  
  133.             ex.printStackTrace();  
  134.         }  
  135.     }  
  136. }  

 

webView判断是否加载完成的2种办法

mWebView.setWebViewClient(new WebViewClient(){                           @Override                        public void onPageFinished(WebView view, String url)                         {                                //开始                                super.onPageFinished(view, url);                        }                        @Override                        public void onPageStarted(WebView view, String url, Bitmap favicon)                         {                                //结束                                super.onPageStarted(view, url, favicon);                        }}); 

 public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        getWindow().requestFeature(Window.FEATURE_PROGRESS);        setContentView(R.layout.main);                WebView browser = null;        browser = (WebView)findViewById(R.id.webview);        browser.setWebChromeClient(new WebChromeClient()        {         public void onProgressChanged(WebView view,int newProgress)         {          test.this.setProgress(newProgress*100);         }        });        //browser.getSettings().set        browser.loadUrl("http://hiphotos.baidu.com/baidu/pic/item/39dbb6fdeb5efd4a09244df0.jpg");    }