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完成(或打开时)加载网页时,执行该回调方法(如:产生加载进度条)
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories