Android WebView实例详解
安卓开发者社区
QQ31802077
一、什么是webkit ?
Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件。 WebKitMac OS X v10.3及以上版本所包含的软件框架(对v10.2.7及以上版本也可通过软件更新获取)。 同时,WebKit也是Mac OS XSafari网页浏览器的基础。WebKit是一个开源项目,主要由KDEKHTML修改而来并且包含了一些来自苹果公司的一些组件。 
WebKit了解更多baike.baidu/view/1510583.htm
二、Android实现WebView有以下两种不同的方法:
第一种方法的步骤:
1在要Activity中实例化WebView组件:WebView webView = new WebView(this);
2调用WebViewloadUrl()方法,设置WevView要显示的网页:
  互联网用:webView.loadUrl("www.android");
  本地文件用:webView.loadUrl("file:// android_asset/XX.html"); 本地文件存放在:assets 文件中
3调用ActivitysetContentView( )方法来显示网页视图
4WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
5需要在l文件中添加权限,否则会出现Web page not available错误。
  <uses-permission android:name="android.permission.INTERNET" />
第二种方法的步骤:
1在布局文件中声明WebView
2Activity中实例化WebView
3调用WebViewloadUrl( )方法,设置WevView要显示的网页
4为了让WebView能够响应超链接功能,调用setWebViewClient( )方法,设置  WebView视图
5WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
6需要在l文件中添加权限,否则出现Web page not available错误。
<uses-permission android:name="android.permission.INTERNET"/>
三、常用属性、状态描述:
WebSettings常用方法:
setAllowFileAccess 启用或禁止WebView访问文件数据
setBlockNetworkImage 是否显示网络图像
setBuiltInZoomControls 设置是否支持缩放
setCacheMode 设置缓冲的模式
setDefaultFontSize 设置默认的字体大小
setDefaultTextEncodingName 设置在解码时使用的默认编码
setFixedFontFamily 设置固定使用的字体
setJavaSciptEnabled 设置是否支持Javascript
setLayoutAlgorithm 设置布局方式
setLightTouchEnabled 设置用鼠标激活被选项
setSupportZoom 设置是否支持变焦
WebViewClient常用方法:
doUpdate VisitedHistory 更新历史记录
onFormResubmission 应用程序重新请求网页数据
onLoadResource 加载指定地址提供的资源
onPageFinished 网页加载完毕
onPageStarted 网页开始加载
onReceivedError 报告错误信息
onScaleChanged WebView发生改变
shouldOverrideUrlLoading 控制新的连接在当前WebView中打开
WebChromeClient常用方法:
onCloseWindow 关闭WebView
onCreateWindow 创建WebView
onJsAlert 处理Javascript中的Alert对话框
onJsConfirm处理Javascript中的Confirm对话框
onJsPrompt处理Javascript中的Prompt对话框
onProgressChanged 加载进度条改变
onReceivedlcon 网页图标更改
onReceivedTitle 网页Title更改
onRequestFocus WebView显示焦点
 
四、Android webView开发过程中相关知识: 

   1l中必须使用许可"android.permission.INTERNET",否则会出Web
page not available错误。
    2如果访问的页面中有Javascript,则webview必须设置支持Javascript
       &Settings().setJavaScriptEnabled(true); 
    3如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webviewWebViewClient对象。
    4下面的代码通过loadUrl方法设置当前webView需要访问的网址:
mWebView=(WebView) findViewById(R.id.WebView01);
mWebView.loadUrl(“www.juapk/thread-940-1-1.html”);
    5android中专门通过WebSettings来设置WebView的一些属性、状态等。在创建WebView时,系统有一个默认的设置,我们可以通过Settings来得到这个设置:
WebSettings Settings();//取得对象
WebSettingsWebView都在同一个生命周期中存在,当WebView被销毁后,如果再使用WebSettings,则会抛出异常。
  6使用WebViewClient来完成在应用程序中自定义网页浏览程序:
WebViewClient是辅助WebView处理各种通知、请求等事件的类。通过WebViewsetWebViewClient方法指定WebViewClient对象。
WebView可以通过覆盖WebViewClientjavascript进度条方法来辅助WebView浏览网页:
public Boolean shouldOverrideUrlLoading
(WebView view,String url){view .loadUrl(url);return true;}
 
 
五、Android webView实例讲解
A. webview组件如何使用
 
1)添加权限:
l中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。
2)在要Activity中生成一个WebView组件:WebView webView = new WebView(this);或者可以在activitylayout文件里添加webview控件:
<WebView  android:id="@+id/wv"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="@string/hello"
    />
3)设置WebView基本信息:
    如果访问的页面中有Javascript,则webview必须设置支持Javascript
          Settings().setJavaScriptEnabled(true); 
          触摸焦点起作用
          requestFocus();
          取消滚动条
          this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
 
4)设置WevView要显示的网页:
     互联网用:webView.loadUrl("le"); 
      本地文件用:webView.loadUrl("file:///android_asset/XX.html");  \本地文件存放在:assets文件中
5)如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接。给WebView添加一个事件监听对象(WebViewClient)并重写其中的一些方法:
 shouldOverrideUrlLoading:对网页中超链接按钮的响应。当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url。比如当webview内嵌网页的某个数字被点击时,它会自动认为这是一个电话请求,会传递urltel:123,如果你不希望如此可通过重写shouldOverrideUrlLoading函数解决:
public boolean shouldOverrideUrlLoading(WebView view,String url){ 
     if(url.indexOf("tel:")<0){//页面上有数字会导致连接电话 
         view.loadUrl(url); 
     } 
     return true;           
}

另外还有其他一些可重写的方法 
1接收到Http请求的事件
onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) 
2打开链接前的事件
public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } 
这个函数我们可以做很多操作,比如我们读取到某些特殊的URL,于是就可以不打开地址,取消这个操作,进行预先定义的其他操作,这对一个程序是非常必要的。
 
3载入页面完成的事件
public void onPageFinished(WebView view, String url){ } 
同样道理,我们知道一个页面载入完成,于是我们可以关闭loading条,切换程序动作。
 
4载入页面开始的事件
public void onPageStarted(WebView view, String url, Bitmap favicon) { } 
这个事件就是开始载入页面调用的,通常我们可以在这设定一个loading的页面,告诉用户程序在等待网络响应。
 
通过这几个事件,我们可以很轻松的控制程序操作,一边用着浏览器显示内容,一边监控着用户操作实现我们需要的各种显示方式,同时可以防止用户产生误操作。
     

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。