webview加载页面不完整,以及各种属性

时间:2022-11-10 18:08:45

我直接上代码了。简单粗暴。因为js Android 互调还没做,暂时先完成页面功能。 以下属性各取所需。

有不对的,望请告知。

/**

     * 初始化 WebChromeClient
     */
    private void initWebChromeClient() {
        webView.setWebChromeClient(new WebChromeClient() {

            @Override
            public void onReceivedTitle(WebView view, String title) {
                super.onReceivedTitle(view, title);
                tvTitle.setText(title);

            }

@Override
public void onProgressChanged(WebView view, int newProgress) {
    if (newProgress != 100) {
        mProgressBar.setProgress(newProgress);
    } else {
        mProgressBar.setVisibility(View.GONE);
    }
}


    }



/**
     * 初始化 WebViewClient
     */
    private void initWebViewClient() {
        webView.setWebViewClient(new WebViewClient() {
            // TODO 该方法可对前端界面url进行拦截,实现源生与前端H5界面的数据互换
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                Logger.d("WebViewClient_URL >>> " + url);
                view.loadUrl(url);
                return true;
            }

            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                super.onReceivedError(view, errorCode, description, failingUrl);
                // 错误链接访问错误的全局化链接
                view.loadUrl("file:///android_asset/404.html");
            }

            @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                super.onReceivedSslError(view, handler, error);
                //handler.cancel(); // Android默认的处理方式
                //handleMessage(Message msg); // 进行其他处理
                handler.proceed();  // 接受所有网站的证书
            }

            @Override
            public void onLoadResource(WebView view, String url) {
                super.onLoadResource(view, url);
                if (webView != null && webView.getProgress() == 100) {
                    progressBar.setVisibility(View.GONE);
                }
            }

        });
    }

  /**

     * 初始化 WebViewSetting

     *各种属性

     */
    @SuppressLint("SetJavaScriptEnabled")
    private void initWebViewSetting() {
        webView.setListener(this, this);
        WebSettings mSettings = webView.getSettings();
        // 支持获取手势焦点
        webView.requestFocusFromTouch();
        webView.setHorizontalFadingEdgeEnabled(true);
        webView.setVerticalFadingEdgeEnabled(false);
        webView.setVerticalScrollBarEnabled(false);
        // 支持JS
        mSettings.setJavaScriptEnabled(true);
        mSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        mSettings.setBuiltInZoomControls(true);
        mSettings.setDisplayZoomControls(true);
        mSettings.setLoadWithOverviewMode(true);
        // 支持插件
        mSettings.setPluginState(WebSettings.PluginState.ON);
        mSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
        // 自适应屏幕
        mSettings.setUseWideViewPort(true);
        mSettings.setLoadWithOverviewMode(true);
        // 支持缩放
        mSettings.setSupportZoom(false);//就是这个属性把我搞惨了,
        // 隐藏原声缩放控件
        mSettings.setDisplayZoomControls(false);
        // 支持内容重新布局
        mSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        mSettings.supportMultipleWindows();
        mSettings.setSupportMultipleWindows(true);
        // 设置缓存模式
        mSettings.setDomStorageEnabled(true);
        mSettings.setDatabaseEnabled(true);
        mSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
        mSettings.setAppCacheEnabled(true);
        mSettings.setAppCachePath(webView.getContext().getCacheDir().getAbsolutePath());
        // 设置可访问文件
        mSettings.setAllowFileAccess(true);
        mSettings.setNeedInitialFocus(true);
        // 支持自定加载图片
        if (Build.VERSION.SDK_INT >= 19) {
            mSettings.setLoadsImagesAutomatically(true);
        } else {
            mSettings.setLoadsImagesAutomatically(false);
        }
        mSettings.setNeedInitialFocus(true);
        // 设定编码格式
        mSettings.setDefaultTextEncodingName("UTF-8");
    }