Android webView 支持 svg 渲染

Android webView support for svg rendering

本文关键字:渲染 svg 支持 webView Android      更新时间:2023-09-26

我有一个使用 android 4.03 - API 级别 15 开发的应用程序。它有一个webView,我想用它来显示一个带有一些svg内容的html页面。一些svg内容直接嵌入到html中,一些使用javascript动态渲染。

我有一台运行安卓 7 的华为 S2.2 平板电脑。我添加了一个向后兼容包,以便我可以在选项卡中运行我的应用程序。

现在,当我创建 html 页面并在 dektop 浏览器中运行它时,它会完美地呈现所有 svg 连接。当我在平板电脑中运行该应用程序时,它不显示任何 svg 内容。它只显示白色背景。但是当我在我的朋友 nexus 7 平板电脑上尝试相同的应用程序时,android 4.3 它完美地显示了 webView 中的所有 svg 内容。

我使用此代码初始化网络视图

WebView mapView;
mapView = (WebView) findViewById(R.id.mapview);
mapView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
            @Override
            public void onPageFinished(WebView view, String url) {
            }
        });
        WebSettings s = mapView.getSettings();
        s.setLoadWithOverviewMode(true);
        s.setLoadsImagesAutomatically(true);
        s.setUseWideViewPort(true);
        s.setJavaScriptEnabled(true);
        s.setSupportZoom(true);
        s.setBuiltInZoomControls(true);

        File externalStorage = Environment.getExternalStorageDirectory();    
        String url = "file:///" + externalStorage + "/floor_one.html";
mapView.loadUrl(url);

安卓 2.2 网络视图与 SVG 是否有任何兼容性问题?

SVG 在 Android 3.0 之前不受支持,因此您必须找到一些解决方法。

这篇博文解释了SVG的两个Javascript填充。

http://www.kendoui.com/blogs/teamblog/posts/12-02-17/using_svg_on_android_2_x_and_kendo_ui_dataviz.aspx

如果你添加这个:

webView.getSettings().setPluginState(PluginState.ON);

我能看到的唯一一个你没有的参数可能会产生影响。