虽然android的webview现在可以直接接入腾讯的X5或者UC WebView SDK,都号称更稳定更快和适配更方便。但实际开发中不一定所有的产品都会接入它们,像x5在视频全屏时会有QQ浏览器的下载链接(我没查文档,不知道可不可以去掉的),一不小心点到就去下载了,且在我使用的时候就适配而言并没有比原生的好多少。不论怎么说多会点东西总不会亏。本篇文章讲的是1、修改WebView原本的错误页处理2、页面跳转的处理3、页面加载进度条的处理4、视频全屏处理。主要实现方式就是处理WebViewClient和WebChromeClient。不喜欢看说明的可以直接拉到底部有demo下载地址。本文地址:http://blog.csdn.net/lanqi_x/article/details/70157453
一、修改WebView原本的错误页处理和页面跳转的处理,这两个功能是在WebViewClient中处理。
1、页面跳转的处理基本上所有的android开发者都知道怎么处理,就不多说了,直接贴代码
/**
* 点击网页中按钮时,让其还在原页面打开
*/
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("http")) {
if (loadNewUrlListener != null) {
if (!loadNewUrlListener.loadNewUrl(view, url)) {
view.loadUrl(url);
}
} else {
view.loadUrl(url);
}
} else {
// 非http和https请求丢给系统处理,比如拨打电话等
try {
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(url));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
view.getContext().startActivity(intent);
} catch (Exception e) {
// 没有安装对应的应用会抛异常
e.printStackTrace();
}
}
return true;
}
2、修改WebView原本的错误页,这个我的处理思路是当页面加载错误时,会调用onReceivedError方法,在这个时候我把WebView给隐藏了,然后拿到WebView的父控件,在对于WebView的位置上加入我自己定义的错误页布局。当重新加载没有错误时就把这个错误页移除掉,再将WebView显示处理。来吧,贴一小段代码吧!
/**
* 页面加载结束
*
* @param view
* @param url
*/
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
hideErrorPag