安卓高级开发-下-笔记(共17周)第十三周

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档