Android webView支持svg渲染

时间:2013-09-12 05:59:49

标签: javascript android svg webview android-webview

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

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

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

我使用此代码初始化webView

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);

Android 2.2 webView与SVG有兼容性问题吗?

2 个答案:

答案 0 :(得分:4)

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

此博客文章解释了两个用于SVG的Javascript polyfill。

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

答案 1 :(得分:0)

如果你添加这个怎么办:

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

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