Android开发Android开发经验谈程序员

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);// 缩放至屏幕的大小

}
上一篇下一篇

猜你喜欢

热点阅读