0

在开发Android使用Rickshaw绘制图表的应用程序时,我遇到了这个奇怪的问题:在 Galaxy Nexus S(具有 OS 4.0.4)上,图表绘制完美,而在摩托罗拉 Defy(CyanogenMod7,具有 OS 2.3.7)上却可以不是。这可能是操作系统版本问题吗?谁能帮我这个?

这是代码:

public class RickshawTestActivity extends Activity {
    private WebView webView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        webView = new WebView(this);

        webView.getSettings().setJavaScriptEnabled(true);

        setContentView(webView);

        webView.loadUrl("file:///android_asset/chart.html");

    }
}

这是assets/chart.html

<!doctype>
<script src="vendor/d3.min.js"></script>
<script src="vendor/d3.layout.min.js"></script>
<script src="rickshaw.min.js"></script>

<div id="chart"></div>

<script>
    var data = [ {
        x : 1910,
        y : 92228531
    }, {
        x : 1920,
        y : 106021568
    }, {
        x : 1930,
        y : 123202660
    }, {
        x : 1940,
        y : 132165129
    }, {
        x : 1950,
        y : 151325798
    }, {
        x : 1960,
        y : 179323175
    }, {
        x : 1970,
        y : 203211926
    }, {
        x : 1980,
        y : 226545805
    }, {
        x : 1990,
        y : 248709873
    }, {
        x : 2000,
        y : 281421906
    }, {
        x : 2010,
        y : 308745538
    } ];

    var graph = new Rickshaw.Graph({
        element : document.querySelector("#chart"),
        width : 580,
        height : 250,
        series : [ {
            color : 'steelblue',
            data : data
        } ]
    });

    graph.render();
</script>

数据有效,所有引用的.js文件都找到了。这也适用于我的 Mozilla 13 浏览器。

谢谢


编辑:

我还在不同的模拟器上测试了这段代码,并得出结论,上面的代码只适用于 3.0 及更高版本的操作系统。在 3.0 以下的操作系统版本上,这不起作用。

现在我怎样才能让它工作?谢谢

编辑: 我需要一个跨平台的库。

4

1 回答 1

0

我假设 Rickshaw/D3 使用的一个或多个功能没有(正确/完全)在 3.0 之前的 Android 附带的 WebKit 版本中实现。由于 Webkit 是操作系统的一部分,您不能单独更改或更新它。

您唯一的机会是使用具有自己的渲染引擎的不同网络浏览器应用程序 - 例如,据我所知,Android 的 Firefox 有一个。

如果您需要在 2.1+ 上运行的 Android 应用程序,我只能看到在您的应用程序中嵌入网络渲染器或使用客户端图表生成的可能性。有一些可用的库允许您这样做:

这两个库都是不依赖 JavaScript 的纯 Java 库 - 因此它们独立于操作系统包含的 WebKit 版本。

于 2012-07-12T09:38:56.527 回答