美文网首页Android开发Android开发经验谈程序员
WebView的加载进度,报错处理,配置

WebView的加载进度,报错处理,配置

作者: 你的益达233 | 来源:发表于2018-09-25 20:07 被阅读17次

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

    相关文章

      网友评论

        本文标题:WebView的加载进度,报错处理,配置

        本文链接:https://www.haomeiwen.com/subject/hntroftx.html