您的位置:首页 > 移动开发

WebView的使用

2016-06-15 13:59 393 查看



1.webView的一般用法

在写android应用程序的时候,如果我们需要用到Html页面的时候,一般都是在布局文件中声明一个WebView组件,然后再Activity里面实例化再调用webview.loadurl

( )方法。如果需要调用Js的时候,需要调用getSettings( ).setJavaScriptEnabled(true);如果不执行这个方法,webview默认是不能执行Js中的方法的,即setJavaScriptEnabled(flag)这个方法里面的flag是为false的。对应的WebSetting代码如图:

/**
* Tells the WebView to enable JavaScript execution.
* <b>The default is false.</b>
*
* @param flag true if the WebView should execute JavaScript
*/
</pre><br /><span style="color:#cc7832;">public abstract void </span><span style="color:#ffc66d;">setJavaScriptEnabled</span>(<span style="color:#cc7832;">boolean </span>flag)<span style="color:#cc7832;">;</span>
如果我们在执行Js中文件中的超链接时候,android会默认使用系统自带的浏览器,这样就会让页面从我们的软件跳转到另外一个浏览器上面,给用户的体验非常不好。为了解决这个问题,我们可以重写webclient的shouldOverrideUrlLoading()方法,具体用法为:

webView.setWebViewClient(new WebViewClient(){<table border="1" cellpadding="1" cellspacing="1" width="200"><tbody></tbody></table>
@Override
public boolean shouldOverrideUrlLoading(WebView view ,Url url){
//
//处理逻辑
//
//
return true;
}
})
主要逻辑就是重写WebViewClient的手榴弹shouldOverrideUrlLoading(WebView view,String url)方法,这个方法的源码如下:
/**
* Give the host application a chance to take over the control when a new
* url is about to be loaded in the current WebView. If WebViewClient is not
* provided, by default WebView will ask Activity Manager to choose the
* proper handler for the url. If WebViewClient is provided, return true
* means the host application handles the url, while return false means the
* current WebView handles the url.
* This method is not called for requests using the POST "method".
*
* @param view The WebView that is initiating the callback.
* @param url The url to be loaded.
* @return True if the host application wants to leave the current WebView
* and handle the url itself, otherwise return false.
*/
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}

意思就是能当webview加载一个url的时候出现3个情况:

如果没有提供 WebViewClient 对象,则 WebView 会请求 Activity 管理者选择合适的 URL 处理方式,一般情况就是启动浏览器来加载URL;
如果提供了 WebViewClient 对象且shouldOverrideUrlLoading 方法返回 true,则主机应用(意思应该是 Android 系统)处理URL。

如果提供了 WebViewClient 对象且shouldOverrideUrlLoading 方法返回 false,则当前 WebView 处理URL;

   上面的3中方式可以根据我们的业务自由选择。
另外还要注意一个情况,在

2 常用方法

WebView的常用方法

1. getSettings():获得对当前WebView控制的Websettings对象2. setWebViewClient():为WebView设置可以接收通知和请求的客户端3. addJavaScriptInterface():把Java对象绑定到JavaScript对象中4. loadUrl():在WebView中加载待显示的网页5. goBack():在WebView 中后退一步(返回上一个网页)
WebSettings类:    (1) setJavaScriptEnable(): 设置WebView是否支持JavaScript    (2) setBuildInZoomControls(): 设置WebView是否支持缩放    (3) setBlockNetworkImage(): 设置是否加载网络图像    (4) setAllowFileAccess(): 设置是否允许访问文件数据、
WebViewClient类:     (1) shouldOverrideUrlLoading():当在WebView中触发链接时,由该回调方法处理打开新链接页面的方式(如:在当前WebView中打开新网页,是不是调用默认浏览器打开)     (2) onPageFinished()/onPageStarted():当WebView完成(或打开时)加载网页时,执行该回调方法(如:产生加载进度条)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息