一。
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
,于是就可以不打开地址,
取消这个操作,进行预先定义的其他操作,
这对一个程
序是非常必要的。