WebView的加载进度,报错处理,配置
2018-09-25 本文已影响17人
你的益达233
WebView的加载进度,报错处理,配置
xml布局代码(仅供参考):
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<ImageView
android:id="@+id/iv_img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible" />
<com.yiban1314.yiban.widget.NumberProgressBar
android:id="@+id/npb_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:max="100"
/>
<WebView
android:id="@+id/wv_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
/>
<include layout="@layout/layout_net_error_base"/>
</FrameLayout>
进度条监听
wvMain.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
LogUtils.i(newProgress+"");
if (null != npbBar) {
npbBar.setProgress(newProgress);
if (newProgress == 100) {
npbBar.setVisibility(View.GONE);
wvMain.setVisibility(View.VISIBLE);
}
}
super.onProgressChanged(view, newProgress);
}
});
报错处理
wvMain.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 使用当前WebView处理跳转
view.loadUrl(url);
// true表示此事件在此处被处理,不需要再广播
return true;
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
//错误布局切换代码
loadError();
}
});
webView配置
private void webViewSetting() {
wvMain.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);//支持通过Javascript打开新窗口
wvMain.getSettings().setJavaScriptEnabled(true);//设置WebView属性,能够执行Javascript脚本
wvMain.getSettings().setDomStorageEnabled(true);//设置是否启用了DOM Storage API
wvMain.getSettings().setDatabaseEnabled(true);//开启database storage API功能
wvMain.getSettings().setUseWideViewPort(true);//将图片调整到适合webview的大小
wvMain.getSettings().setLoadWithOverviewMode(true);// 缩放至屏幕的大小
}