Android——WebView组件的使用详解

本文深入探讨了WebView组件的使用方法,包括如何直接显示网页内容、网络图片、中文网页内容以及如何在APK内加载HTML和图片文件。同时,展示了如何处理中文显示、空格显示以及本地文件加载问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

res/layout/main.xml
Xml代码 收藏代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LINEARLAYOUTandroid:layout_height="fill_parent"android:layout_width="fill_parent"android:orientation="vertical"xmlns:android="http://schemas.android.com/apk/res/android">
  3. <WEBVIEWandroid:layout_height="fill_parent"android:layout_width="fill_parent"android:id="@+id/webview"/>
  4. </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代码 收藏代码
  1. packagecn.coolworks;
  2. importjava.net.URLEncoder;
  3. importandroid.app.Activity;
  4. importandroid.os.Bundle;
  5. importandroid.webkit.WebView;
  6. publicclassExample_webviewextendsActivity{
  7. WebViewwebView;
  8. finalStringmimeType="text/html";
  9. finalStringencoding="utf-8";
  10. /**Calledwhentheactivityisfirstcreated.*/
  11. @Override
  12. publicvoidonCreate(BundlesavedInstanceState){
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.main);
  15. webView=(WebView)findViewById(R.id.webview);
  16. webView.getSettings().setJavaScriptEnabled(true);
  17. //
  18. //webHtml();
  19. //
  20. //webImage();
  21. //
  22. //localHtmlZh();
  23. //
  24. //localHtmlBlankSpace();
  25. //
  26. //localHtml();
  27. //
  28. //localImage();
  29. //
  30. localHtmlImage();
  31. }
  32. /**
  33. *直接网页显示
  34. */
  35. privatevoidwebHtml(){
  36. try{
  37. webView.loadUrl("http://www.google.com");
  38. }catch(Exceptionex){
  39. ex.printStackTrace();
  40. }
  41. }
  42. /**
  43. *直接网络图片显示
  44. */
  45. privatevoidwebImage(){
  46. try{
  47. webView
  48. .loadUrl("http://www.gstatic.com/codesite/ph/images/code_small.png");
  49. }catch(Exceptionex){
  50. ex.printStackTrace();
  51. }
  52. }
  53. /**
  54. *中文显示
  55. */
  56. privatevoidlocalHtmlZh(){
  57. try{
  58. Stringdata="<!--lencoding="utf-8"version="1.-->测试含有中文的Html数据";
  59. //utf-8编码处理(在SDK1.5模拟器和真实设备上都将出现乱码,SDK1.6上能正常显示)
  60. //webView.loadData(data,mimeType,encoding);
  61. //对数据进行编码处理(SDK1.5版本)
  62. webView.loadData(URLEncoder.encode(data,encoding),mimeType,
  63. encoding);
  64. }catch(Exceptionex){
  65. ex.printStackTrace();
  66. }
  67. }
  68. /**
  69. *中文显示(空格的处理)
  70. */
  71. privatevoidlocalHtmlBlankSpace(){
  72. try{
  73. Stringdata="测试含有空格的Html数据";
  74. //不对空格做处理
  75. webView.loadData(URLEncoder.encode(data,encoding),mimeType,
  76. encoding);
  77. //webView.loadData(data,mimeType,encoding);
  78. //对空格做处理(在SDK1.5版本中)
  79. webView.loadData(URLEncoder.encode(data,encoding).replaceAll(
  80. "\\+",""),mimeType,encoding);
  81. }catch(Exceptionex){
  82. ex.printStackTrace();
  83. }
  84. }
  85. /**
  86. *显示本地图片文件
  87. */
  88. privatevoidlocalImage(){
  89. try{
  90. //本地文件处理(如果文件名中有空格需要用+来替代)
  91. webView.loadUrl("file:///android_asset/icon.png");
  92. }catch(Exceptionex){
  93. ex.printStackTrace();
  94. }
  95. }
  96. /**
  97. *显示本地网页文件
  98. */
  99. privatevoidlocalHtml(){
  100. try{
  101. //本地文件处理(如果文件名中有空格需要用+来替代)
  102. webView.loadUrl("file:///android_asset/test.html");
  103. }catch(Exceptionex){
  104. ex.printStackTrace();
  105. }
  106. }
  107. /**
  108. *显示本地图片和文字混合的Html内容
  109. */
  110. privatevoidlocalHtmlImage(){
  111. try{
  112. Stringdata="测试本地图片和文字混合显示,这是<IMGsrc='\"file:///android_asset/icon.png\"/'>APK里的图片";
  113. //SDK1.5本地文件处理(不能显示图片)
  114. //webView.loadData(URLEncoder.encode(data,encoding),mimeType,
  115. //encoding);
  116. //SDK1.6及以后版本
  117. //webView.loadData(data,mimeType,encoding);
  118. //本地文件处理(能显示图片)
  119. webView.loadDataWithBaseURL("about:blank",data,mimeType,
  120. encoding,"");
  121. }catch(Exceptionex){
  122. ex.printStackTrace();
  123. }
  124. }
  125. }
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 = "<!--l encoding="utf-8" version="1.-->测试含有 中文的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 = "测试本地图片和文字混合显示,这是<IMGsrc='\"file:///android_asset/icon.png\"/'>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(); } } }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值