0

人力車Androidを使用していくつかのチャートを描画するアプリケーションを開発しているときに、この奇妙な問題に遭遇しました。Galaxy Nexus S (OS 4.0.4 を搭載) ではチャートは完全に描画されますが、Motorola Defy (CyanogenMod7、OS 2.3.7 を搭載) では描画されますいいえ。これはOSのバージョンの問題でしょうか?誰でもこれで私を助けることができますか?

コードは次のとおりです。

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 ブラウザーでも機能します。

ありがとう


編集:

また、このコードをさまざまなエミュレーターでテストしたところ、上記のコードは OS バージョン 3.0 以降でのみ機能することがわかりました。3.0 未満の OS バージョンでは、これは機能しません。

どうすればそれを機能させることができますか?ありがとう

編集: クロスプラットフォームのライブラリが必要です。

4

1 に答える 1

0

Rickshaw / D3が使用するもう1つの機能は、3.0より前のAndroidに同梱されているWebKitバージョンでは(正しく/完全に)実装されていないと思います。WebkitはOSの一部であるため、個別に変更または更新することはできません。

あなたが持っている唯一のチャンスは、それ自身のレンダリングエンジンを持っている別のウェブブラウザアプリを使うことです-例えば、Android用のFirefoxは私が覚えている限りそれを持っています。

2.1以降で実行されるAndroidアプリが必要な場合は、アプリにWebレンダラーを埋め込むか、代わりにクライアントサイドチャート生成を使用する可能性しかありません。あなたがそうすることを可能にする利用可能ないくつかのライブラリがあります:

どちらのライブラリもJavaScriptに依存しないプレーンJavaライブラリであるため、OSに含まれるWebKitバージョンから独立しています。

于 2012-07-12T09:38:56.527 に答える