//第一种 在Activity里:
mWeb.loadUrl("https://www.baidu.com/?tn=98010089_dg&ch=8");
mWeb.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl("https://www.baidu.com/?tn=98010089_dg&ch=8");
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
//TODO
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//TODO
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
/*隐藏默认的404页面*/
view.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
/**加载自定义页面,在这里你可以弹出个加载失败的窗口布局*/
//-------------------------------------也可以像我一样写个显示隐藏的一行字
mWeb.setVisibility(View.GONE);
mPage_load_failed.setVisibility(View.VISIBLE);
}
});
//我的Activity布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<WebView
android:id="@+id/mWeb"
android:layout_width="match_parent"
android:layout_height="match_parent"></WebView>
<TextView
android:id="@+id/mPage_load_failed"
android:visibility="gone"
android:gravity="center"
android:textSize="20sp"
android:text="页面加载失败"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
//不推荐使用第一种方式,那么来看第二种,并且设置居中:
//第二种,通过这种方式不用再写一个显示隐藏的布局,我只写了一个WebView布局就可以了,比较省事,并且设置居中:
mWeb.loadUrl(mUrl);
mWeb.setWebViewClient(new android.webkit.WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(mUrl);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
//TODO
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//TODO
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
/*隐藏默认的404页面,显示页面加载失败*/
// //水平居中,通过标签居中
// view.loadDataWithBaseURL(null, "<center>页面加载失败</center>", "text/html", "utf-8", null);
//水平与垂直居中的html
view.loadDataWithBaseURL(null, "<html><body><div><table width=100% height=100% ><tr><td><p style=text-align:center;>页面加载失败</p></td></tr></table></div></body></html>", "text/html", "utf-8", null);
/**加载自定义页面,隐藏WebView,显示加载失败*/
}
});
//然后顺便的你还可以写个WebView页面返回的时候,一层层的退出效果:
/*
* 方法名:onKeyDown(int keyCode, KeyEvent event)
* 功 能:WebView页面一层层退出。
* 参 数:int keyCode, KeyEvent event
* 返回值:boolean
*/
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWeb.canGoBack()) {
mWeb.goBack();
if (mWeb.getUrl().toString().equals("data:text/html;charset=utf-8;base64,")) {
mWeb.goBack();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
//—————————————————————–完———————————————————————
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118318.html