关于android WebViewClient的方法解释

适用项目:

js页面还没加载好时,在上面赋loading界面,如果加载好就隐藏loading

失败经历:以前写一个项目时第一个界面是原生的,第二个界面是java写的(js页面)要求是js页面还没加载完成时要显示一个loading界面界面,等它加载完成时隐藏;现实情况是js页面出来会有1-2秒钟的黑屏现象(可能是代码问题,我接手事前面已经有至少三个人开发,找不到人,所以只能加一个loading界面把黑屏掩盖掉),当时不知道有WebViewClient的方法,所以Java人员给我一个方法是写一个方法,方法中有一个标记位,如果为true怎么样,为false怎么样,js进行调用这个方法,写完之后出现各种问题,以失败告终。

1、在点击请求的是链接是才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边。

public boolean shouldOverrideUrlLoading(WebView view, String url) {
	view.loadUrl(url);
	return true;
}
2、在页面加载开始时调用。
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
	if (DEBUG) {
		Log.d(TAG, " onPageStarted ");
	}
	if (url.endsWith(".apk")) {
		download(url);//下载处理
	}
	super.onPageStarted(view, url, favicon);
	loading.setVisibility(View.VISIBLE);//loading加载页面
}
3、在页面加载结束时调用。

public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
	if (DEBUG) {
	Log.d(TAG, " onPageFinished ");
	}
	super.onPageFinished(view, url);
	loading.setVisibility(View.INVISIBLE);//loading隐藏
}
4、重写此方法可以让webview处理https请求。

public void onReceivedSslError(WebView view, SslErrorHandler handler, android.net.http.SslError error) {
	handler.proceed();
}
5、重写此方法才能够处理在浏览器中的按键事件。

public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
	return super.shouldOverrideKeyEvent(view, event);
}
6、 在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。
public void onLoadResource(WebView view, String url) {
// TODO Auto-generated method stub
	if (DEBUG) {
	Log.d(TAG, " onLoadResource ");
	}
	super.onLoadResource(view, url);
}







郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。