2012-07-09 35 views
0

而開發Android應用程序使用Rickshaw來繪製一些圖表時,我遇到了這個奇怪的問題:在Galaxy Nexus S(具有OS 4.0.4)時,圖表完美繪製,而在摩托羅拉Defy(CyanogenMod7,擁有OS 2.3.7)沒有。這可能是操作系統版本問題嗎?誰能幫我這個?Javascript圖表不能繪製不同的android api版本

下面是代碼:

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的操作系統版本上,這不起作用。

現在我該如何讓它工作?謝謝

編輯: 我需要一個跨平臺的圖書館。

+0

你是什麼意思的跨平臺。你的問題是關於開發一個Android應用程序。 – Robert 2012-07-12 13:34:51

+0

你真的想讓我的50位代表提出這個問題,對吧? :) – overbet13 2012-07-13 06:47:47

+0

我想要的是在其他平臺上的可重用性。無論如何,老兄,你可以給我這個答案,當賞金沒有被提出這個問題時,順便說一句,這不是一個很好的答案,我的意思是這是很好的文件和東西,但沒有解決我的問題。抱歉。 – overbet13 2012-07-13 06:54:15

回答

0

我認爲人力車/ D3使用的一個或多個功能並未(正確/完全)在Android 3.0之前的Android版本的WebKit版本中實現。由於Webkit是操作系統的一部分,因此您無法單獨更改或更新它。

您唯一的機會是使用具有自己渲染引擎的不同網絡瀏覽器應用程序 - 例如,據我所知,Firefox for Android有一個。

如果您需要運行於2.1+以上的Android應用程序,我只能看到在應用程序中嵌入Web渲染器或使用客戶端生成代替的可能性。在一些可用的庫,它允許你這樣做:

這兩個庫是不依賴於JavaScript普通的Java庫 - 因此,他們是獨立的WebKit的版本操作系統包含。

+0

這不是一種選擇,因爲作爲開發人員,我必須確定我的應用程序適用於所有OS版本爲2.1及以上的設備。 – overbet13 2012-07-12 10:13:05

+0

查看我的更新回答。 – Robert 2012-07-12 11:16:28

+0

查看我更新的問題 – overbet13 2012-07-12 12:36:34