`

Android中使用WebView, WebChromeClient和WebViewClient加载网页

阅读更多
在android应用中,有时要加载一个网页,如果能配上一个进度条就更好了,而android
中提供了其很好的支持,下面是一个例子程序,先帖:
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webView" android:layout_width="fill_parent"
android:layout_height="fill_parent" />

主程序:
public class WebPageLoader extends Activity
  {    
	  final Activity activity = this;   
	  @Override   
	  public void onCreate(Bundle savedInstanceState)   
	  {    
		  super.onCreate(savedInstanceState);    
		  this.getWindow().requestFeature(Window.FEATURE_PROGRESS);   
		  setContentView(R.layout.main);  
		  WebView webView = (WebView) findViewById(R.id.webView);   
		  webView.getSettings().setJavaScriptEnabled(true);
	  webView.getSettings().setSupportZoom(true);
		  webView.setWebChromeClient(new WebChromeClient() 
		  {          
			  public void onProgressChanged(WebView view, int progress)   
			  {            
				  activity.setTitle("Loading...");       
				  activity.setProgress(progress * 100);     
				  if(progress == 100)            
					  activity.setTitle(R.string.app_name);       
				  }      
			  }
		  );      
		  webView.setWebViewClient(new WebViewClient() {   
			         
			  public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)   
			  {                 // Handle the error       
				  
			  }             
			        
			  public boolean shouldOverrideUrlLoading(WebView view, String url) 
			  {              
				  view.loadUrl(url);   
				  return true;       
				  }      
			  });  
		  webView.loadUrl("http://www.sohu.com");  
		  } 
	  }



  要注意的是,其中的webView的一系列用法,比如 webView.getSettings().setJavaScriptEnabled(true);设置可以使用javscript;

  webView.getSettings().setJavaScriptEnabled(true);  
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);  
webView.setHorizontalScrollBarEnabled(false);  
webView.getSettings().setSupportZoom(true);  
webView.getSettings().setBuiltInZoomControls(true);  
webView.setInitialScale(70);  
webView.setHorizontalScrollbarOverlay(true); 

等等,具体参考API
而进度条的使用是在new出一个setWebChromeClient后,可以在内部类中写
onProgressChanged事件

而引用另外兄弟的文中说的,这几者的关系,转一下:
http://www.iteye.com/topic/377294
在WebView的设计中,不是什么事都要WebView类干的,有些杂事是分给其他人的,这样WebView专心干好自己的解析、渲染工作就行了。WebViewClient就是帮助WebView处理各种通知、请求事件的,具体来说包括:

  onLoadResource

  onPageStart

  onPageFinish

  onReceiveError

  onReceivedHttpAuthRequest



WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等



  onCloseWindow(关闭WebView)

  onCreateWindow()

  onJsAlert (WebView上alert是弹不出来东西的,需要定制你的WebChromeClient处理弹出)

  onJsPrompt

  onJsConfirm

  onProgressChanged

  onReceivedIcon

  onReceivedTitle



而http://www.iteye.com/topic/376674这个帖子也是很好的学习资源哦
5
2
分享到:
评论
2 楼 23snyga 2011-09-06  
  UP UP UP
1 楼 mapeijie888 2011-03-18  
强烈建议 顶一个

相关推荐

    android WebViewClient与WebChromeClient用法

    总结来说,WebViewClient和WebChromeClient在Android WebView的使用中扮演着不可或缺的角色。理解它们各自的职责和用法,有助于我们更好地控制网页的加载过程,实现与网页内容的交互,从而提升应用的整体质量。

    Android中WebChromeClient和WebViewClient的区别浅析

    2、WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等 onCloseWindow(关闭WebView) 、onCreateWindow() 、onJsAlert &#40;WebView上alert是弹不出来东西的,需要定制你的...

    Android高级应用源码-自定义WebView,自带加载动画.rar

    通过分析和学习这个源码,开发者可以更深入地掌握Android中的WebView使用,理解如何结合原生组件实现更丰富的交互效果,同时也能提升自己的代码组织和优化能力。对于那些希望在应用中集成网页内容的开发者来说,这是...

    android使用webview加载网页

    然后在对应的Activity或Fragment中找到这个WebView,并初始化它,设置WebViewClient和WebChromeClient,以便处理网页加载和交互: ```java WebView webView = findViewById(R.id.webView); webView....

    android不使用webview与js交互

    在Android开发中,Webview通常被用来加载网页内容并实现应用程序与网页之间的交互。然而,有时我们可能有需求在不依赖Webview的情况下实现Android应用与JavaScript的交互。本文将深入探讨这种非Webview方式的交互...

    Android下WebView中调用系统相机拍照范例

    在Android开发中,WebView是一个非常重要的组件,它可以加载和显示HTML内容,实现Web与原生应用的交互。在本文中,我们将深入探讨如何在WebView中调用系统的相机功能,允许用户拍照并返回照片的存储路径。这个功能...

    Android中使用WebView显示网页

    本文将深入探讨如何在Android中使用WebView显示网页,并涉及如何打包本地网页、加载Web页面、设置启用JavaScript以及使用缓存等关键知识点。 1. **使用WebView组件** Android中的WebView是Android SDK提供的一种...

    android中webview加载本地页面,并处理js事件

    综上所述,这个`WebViewDemo`项目展示了如何在Android应用中使用`WebView`加载本地HTML页面,并通过JavaScript Interface实现Java和JavaScript之间的通信,以及在HTML中动态生成和操作组件。这些技术对于构建混合式...

    android 使用WebView浏览网页

    这篇博文“android 使用WebView浏览网页”可能是关于如何在Android应用中集成和使用WebView来展示网页内容的教程。下面将详细介绍WebView的相关知识点。 1. **WebView基本使用** - `WebView`是Android SDK中的一个...

    Android中的webview监听每次URL变化实例

    在Android开发中,WebView组件是一个允许应用显示网页的控件,它使用了WebKit渲染引擎来显示网页内容。随着移动应用越来越依赖于互联网功能,开发者需要能够处理Web内容,同时也要能够监控Web内容的变化,例如URL的...

    android webview 加载网页 样例

    本文将深入探讨如何使用Android WebView加载网页,包括基本使用、配置设置、与JavaScript交互以及处理网络权限等问题。 一、WebView基础 1. 添加依赖 在Android Studio项目中,首先确保在`build.gradle`(Module)...

    android用webview加载assert中的html并且可拨打页面中的电话

    在Android开发中,Webview是一个非常重要的组件,它允许我们加载和显示网页内容。这篇教程将详细介绍如何在Android应用中使用Webview加载assert目录下的HTML文件,并且使用户能够通过Webview拨打电话。 首先,我们...

    android 4.0中关于webview加载flash全屏的DEMO

    在Android中,WebView通过加载HTML页面来展示内容。要加载一个包含Flash内容的网页,我们需要确保目标设备上安装了Adobe Flash Player插件,因为从Android 4.3版本开始,Google官方已经不再支持内置的Flash Player。...

    WebViewClient与WebChromeClient的区别

    在Android应用开发过程中,开发者常常会遇到使用WebView来加载网页或HTML内容的需求。为了更好地控制WebView的行为以及与之交互,Android提供了两个关键的类:`WebViewClient`和`WebChromeClient`。这两个类虽然都是...

    Android通过WEBVIEW调用HTTPS

    在这里,`WebChromeClient`用于处理JavaScript的对话框、进度信息等,而`WebViewClient`则用于拦截网页加载事件,比如加载开始、完成、错误等。 接下来,配置WebView支持HTTPS。默认情况下,WebView支持HTTP和HTTPS...

    Android中WebView的具体实现

    以上是Android中使用WebView的基本操作和常见功能。在实际项目中,根据需求,可能还需要处理更多复杂情况,如处理重定向、实现网页与原生代码的交互、优化性能等。了解并熟练掌握这些知识点,将使你在开发混合式应用...

    Android中WebView加载网页时,在顶部加上进度条

    本篇文章将详细介绍如何在Android的WebView中实现加载网页时在顶部显示进度条的功能。 首先,我们需要在布局文件中创建一个WebView和一个ProgressBar。ProgressBar通常会被设置为垂直或水平的条状指示器,用于展示...

    android--开发中WebView的使用.pdf

    在Android中,不同版本对WebView的支持和实现有所不同。例如,从Android 4.4版本开始,引入了新的WebView组件,并采用了基于Chromium的渲染引擎,这为开发者提供了更好的性能和更现代的网页标准支持。 在实际开发中...

    Android WebView加载网页html文件显示加载进度Demo

    接着,我们创建了两个WebViewClient和WebChromeClient实例,分别用于控制URL加载和获取加载进度。当页面加载时,onProgressChanged方法会被调用,更新ProgressBar的进度。当加载完成(进度达到100%)时,隐藏...

Global site tag (gtag.js) - Google Analytics