webview 知识点

一。

Android应用开发的时候可能会用到WebView这个组件,使用过程中可能会接触到WebViewClient与WebChromeClient,那么这两个类到底有什么不同呢?

WebViewClient主要帮助WebView处理各种通知、请求事件的,比如:

onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest

WebChromeClient主要辅助WebView处理Javascript的对话框、网站图标、网站title、加载进度等比如

onCloseWindow(关闭WebView)
onCreateWindow()
onJsAlert (WebView上alert无效,需要定制WebChromeClient处理弹出)
onJsPrompt
onJsConfirm
onProgressChanged
onReceivedIcon
onReceivedTitle

看上去他们有很多不同,实际使用的话,如果你的WebView只是用来处理一些html的页面内容,只用WebViewClient就行了,如果需要更丰富的处理效果,比如JS、进度条等,就要用到WebChromeClient。
更多的时候,你可以这样

WebView webView;  

webView= (WebView) findViewById(R.id.webview); 

 webView.setWebChromeClient(new WebChromeClient());  

webView.setWebViewClient(new WebViewClient());  

webView.getSettings().

setJavaScriptEnabled(true); 

 webView.loadUrl(url);  

这样你的WebView理论上就能有大部分需要实现的特色了
当然,有些更精彩的内容还是需要你自己添加的



二。



 

 

setJavaScriptEnabled(true); 

 

 

 

 

 

 

 

 

 

 

//

支持

js

脚步

 



 

 

setPluginsEnabled(true); 

 

 

 

 

 

 

 

 

 

 

//

支持插件

 



 

 

setUseWideV

iewPort(false); 

 

 

 

 

 

 

 

 

 

//

将图片调整到适合

webview

的大小

 



 

 

setSupportZoom(true); 

 

 

 

 

 

 

 

 

 

//

支持缩放

 



 

 

setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); 

 

 

 

 

 

 

 

 

 

 

 

 

//

支持内容从新布局

 

 



 

 

supportMultipleWindows(); 

 

 

 

 

 

 

 

 

//

多窗口

 



 

 

setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 

 

 

 

 

 

 

 

 

//

关闭

webview

中缓存

 



 

 

setAllowFileAccess(true); 

 

 

 

 

 

 

 

 

//

设置可以访问文件

 



 

 

setNeedInitialFocus(true); 

 

 

 

 

 

 

 

 

//

webview

调用

requestFocus

时为

webview

设置节点

 

 

 

 

 

 

webSetti

ngs.setBuiltInZoomControls(true); 

 

 

 

 

 

 

 

 

//

设置支持缩放

 



 

 

setJavaScriptCanOpenWindowsAutomatically(true); 

 

 

 

 

 

 

 

 

 

 

 

//

支持通过

JS

打开新窗口

 



 

 

setLoadsImagesAutomatically(true); 

 

 

 

 

 

 

 

 

 

 

 

//

支持自动加载图片

 

WebViewClient 

的方法全解

 



 

doUpdateV

isitedHistory(WebV

iew view, String url, boolean i

sReload) 

 

 

 

 

 

 

 

 

 

 

(

更新历史记录



 

onFormResubmission(WebV

iew view, Message dontResend, Message resend) 

 

 

 

 

 

 

 

 

 

(

应用程序重新请求网页数据



 

onLoadResource(WebV

iew view, String url) 

 

 

 

 

 

 

 

 

 

 

 

 

在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。

 



 

onPageStarted(WebV

iew view, String url, Bitmap favicon) 

 

 

 

 

 

 

 

 

 

 

 

这个事件就是开始载入页面调用的,通常我们可以在这设定一个

l

oading

的页面,告

 

 

 

 

 

 

 

 

 

诉用户程序在等待网络响应。

 



 

onPageFinished(WebV

iew view, String url) 

 

 

 

 

 

 

 

 

 

 

 

在页面加载结束时调用。同样道理,我们知道一个页面载入完成,于是我们可以关

 

 

 

 

 

 

 

 

loading 

条,切换程序动作。

 



 

onReceivedError(WebV

iew view, int errorCode, String description, String failingUrl) 

 

 

 

 

 

 

 

 

(

报告错误信息



 

onReceivedHttpAuthRequest(WebV

iew view, HttpAuthHandler handler, String host, 

 

 

 

 

 

 

 

 

String realm)

(获取返回信息授权请求)

 

 

 



 

onReceivedSslError(WebV

iew view, SslErrorHandler handler, SslError error) 

 

 

 

 

 

 

 

重写此方法可以让

webview

处理

https

请求。

 



 

onScaleChanged(WebV

iew view, float oldScale, float newScale) 

 

 

 

 

 

 

 

 

 

(WebV

iew

发生改变时调用



 

onUnhandledKeyEvent(WebV

iew view, KeyEvent event) 

 

 

 

 

 

 

Key

事件未被加载时调用)

 



 

shouldOverrideKeyEvent(WebV

iew view, KeyEvent event) 

 

 

 

 

 

 

 

重写此方法才能够处理在浏览器中的按键事件。

 



 

shouldOverrideUrlLoading(WebV

iew view, String url) 

 

 

 

 

 

   

在点击请求的是链接是才会调用,重写此方法返回

true

表明点击网页里面的链接还是在

当前的

webview

里跳转,

不跳到浏览器那边。这个函数我们可以做很多操作,

比如我们读取到某

些特殊的

URL

,于是就可以不打开地址,

取消这个操作,进行预先定义的其他操作,

这对一个程

序是非常必要的。



你可能感兴趣的:(webview 知识点)