安卓高级开发-下-笔记(共17周)第十三周
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章Android网络应用
第四节使用WebView显示网页
WebView的一些常用方法
➢前进/ 后退网页
boolean canGoBack = webView.canGoBack();//WebView是否可以后退
webView.goBack();//WebView后退
boolean canGoForward = webView.canGoForward();//WebView是否可以前进
webView.goForward();//WebView前进
boolean canGoBackOrForward = webView.canGoBackOrForward(step);//以当前的index为起始点前进或者后退到历史记录中指定的steps;如果steps为负数则为后退,正数则为前进
注意,点击系统返回键时,是结束当前的Activity,而非调用WebView的goBack()方法。也就是会结束整个浏览器,而不是网页后退
解决方案:在当前Activity中处理并重写onKeyDown事件,在该事件中调用goBack()方法
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
➢重新加载网页和停止加载
webView.reload(); //刷新页面(当前页面的所有资源都会重新加载)
webView.stopLoading(); //停止加载
➢清除浏览器缓存
Webview.clearCache(true);//清除网页访问留下的缓存,由于内核缓存是全局的,因此这个方法不仅仅针对webview而是针对整个应用程序.
有记录除了当前访问记录
Webview.clearFormData(); //这个api仅仅清除自动完成填充的表单数据,并不会清除WebView存储到本地的数据
➢获取WebView高度、内容HTML高度和滚动距离
webView.getScrollY();//获取当前可见区域的顶端距整个页面顶端的距离,也就是当前内容滚动的距离。
webView.getHeight();//获取WebView控件的高度。
webView.getContentHeight();//获取HTML的高度(原始高度,不包括缩放后的高度)
WebView的常用工具类
➢WebSettings类
作用:对WebView进行配置和管理
WebSettings用于管理WebView状态配置,当WebView第一次被创建时,WebView包含着一个默认的配置,这些默认的配置将通过get方法返回,通过WebView中的getSettings方法获得一个WebSettings对象,如果一个WebView被销毁,在WebSettings中所有回调方法将抛出IllegalStateException异常。
WebSettings webSettings = webView.getSettings();
➢webSettings.setJavaScriptEnabled(true);
如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript
➢webSettings.setUseWideViewPort(true);
设置WebView是否使用viewport,当该属性被设置为false时,加载页面的宽度总是适应WebView控件宽度;当被设置为true,当前页面包含viewport属性标签,在标签中指定宽度值生效,如果页面不包含viewport标签,无法提供一个宽度值,则适应WebView控件宽度。
➢webSettings.setLoadWithOverviewMode(true);
是否允许WebView度超出以概览的方式载入页面,默认false。即缩小内容以适应屏幕宽度。该项设置在内容宽度超出WebView控件的宽度时生效,例如当getUseWideViewPort() 返回true时。
➢webSettings.setLayoutAlgorithm (youtAlgorithm.SINGLE_COLUMN);
设置布局,会引起WebView的重新布局(relayout)
LayoutAlgorithm是一个枚举用来控制页面的布局,有三个类型:
1.NARROW_COLUMNS:可能的话使所有列的宽度不超过屏幕宽度
2.NORMAL:正常显示不做任何渲染
3.SINGLE_COLUMN:把所有内容放大webview等宽的一列中
缩放操作
➢webSettings.setSupportZoom(true);
设置WebView是否支持使用屏幕控件或手势进行缩放,默认是true,支持缩放。
➢webSettings.setBuiltInZoomControls(true);
设置WebView是否使用内置的缩放机制。内置的缩放机制包括屏幕上的缩放控件(浮于WebView内容之上)和缩放手势的运用。
➢webSettings.setDisplayZoomControls(false);
设置WebView使用内置缩放机制时,是否展现在屏幕缩放控件上,默认true,展现在控件上。
➢webSettings.setTextZoom(2);
设置WebView中页面上的文本缩放百分比,默认100
➢webSettings.setStandardFontFamily("");
设置WebView 的字体,默认字体为"sans-serif"
➢webSettings.setDefaultFontSize(20);
设置WebView 字体的大小,默认大小为16
➢webSettings.setMinimumFontSize(12);
设置WebView 支持的最小字体大小,默认为8
➢ 5.1以上默认禁止了https和http混用,以下方式是开启
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); }
⏹在Android5.0 以及以上的系统,当WebView加载的链接为Https开头,但是链接里面的内容,比
如图片为Http链接,这时候,图片就会加载不出来,在浏览器中的Console会有如下警告log