2012-11-22 84 views
2

我想整合Android原生應用fusionchart(不PhoneGap的)。我有這方面如下在Android應用程序中整合FusionChart?

public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
WebView webview =(WebView) findViewById(R.id.web); 
String summary = 
"<html>"+ 
"<head>  "+ 
" <title>My First chart using FusionCharts XT - Using JavaScript</title>  "+ 
"<script type=\"text/javascript\" src=\"FusionCharts/FusionCharts.js\"></script>"+ 
"</head> "+ 
"<body>"+  
" <div id=\"chartContainer\">FusionCharts XT will load here!</div>"+   
"<script type=\"text/javascript\">"+ 
" var myChart = new FusionCharts(\"FusionCharts/Column3D.swf\",\"myChartId\", \"400\",\"300\", \"0\", \"1\");"+ 
"myChart.setXMLUrl(\"Data.xml\");"+ 
"myChart.render(\"chartContainer\");"+  
"</script>"+  
"</body>"+ 
"</html>"; 
webview.loadDataWithBaseURL(null, summary, "text/html", "utf8", null); 
} 

寫代碼,請有人告訴我是什麼問題。我不知道如何給出精確的FusionCharts/FusionCharts.js路徑,並且不瞭解Column3D.swf文件。

我在哪裏可以得到這些文件。

即使這個html代碼不工作在我的電腦瀏覽器。

我想在android應用程序中僅使用fusionchart製作條形圖!

回答

1

您需要下載FusionCharts XT下載軟件包以便接收必要的JavaScript和SWF文件,這些文件位於下載軟件包的「圖表」文件夾中,可讓您渲染FusionCharts。您可以從here下載評估套件。

此外,請檢查here的詳細過程,以在瀏覽器上創建您的第一個圖表。

FusionCharts預計能夠在原生Android應用上完美工作,前提是提供所有其他條件here來呈現JavaScript圖表(Android 3.0及更高版本)和Flash圖表。

FusionCharts沒有任何本機API來在Android應用中呈現圖表。因此,您需要使用一些第三方移動開發框架(如PhoneGap,UIWebView等)以及它們提供的API控件來實現相同。

在原生Android應用程序中沒有用於渲染FusionCharts的示例,但是,使用UIWebView控件的iOS應用程序也有類似的實現,可以在此Blog post的幫助下引用。 [注意:這只是作爲參考,並不直接是Android的實現。]

0

您可以從FusionCharts XT包中獲取SWF和JS文件。試用版下載可從http://www.fusioncharts.com/downloads獲得。您將從Download Pack > Charts文件夾中獲取這些文件。

通常,您需要將這些文件放在/assets文件夾中。這些文件與apk打包在一起。您可以使用路徑 - /assets/...訪問這些文件。

參考:Load file from resource

請記住,如果你的目標Android的V3 +,你並不需要渲染Flash圖表。因此,您不需要複製這些SWF文件。 FusionCharts的JavaScript的提供(不閃光)的圖表,並在下面的步驟詳細說明您的實現變得更爲簡單:

  1. 複製FusionCharts.jsFusionCharts.HC.jsFusionCharts.HC.Charts.jsjquery.min.js到所需的文件夾。

但是,在您的HTML代碼中僅包含FusionCharts.js。其他JavaScript文件將自動加載。

  • 相反傳遞SWF文件的名稱的,通過圖表的JavaScript的別名。在你的代碼需要修訂:

    var myChart = new FusionCharts(\"Column3D\",\"myChartId\... 
    

    Column3D是您要呈現圖表的別名。無需在路徑前加前綴。

  • 請勿使用setXMLUrl加載XML。 FusionCharts使用ajax來加載XML數據。本地Ajax在大多數瀏覽器中不受支持(由於安全限制),並且可能會失敗。相反,使用Android的資源加載機制(Load file from resource)加載XML,並使用setXMLData方法將數據作爲字符串傳遞給圖表。

    myChart.setXMLData(XMLLoadedAsString); 
    
  • 更多:更同步的方法就是推行這個是包裝圖表呈現FusionCharts的的ready事件監聽器內部的JavaScript代碼,如下圖所示:

    <script type=\"text/javascript\">"+ 
    
        " FusionCharts.addEventListener(\"ready\", function() { \n"+ 
    
        "  var myChart = new FusionCharts(\"FusionCharts/Column3D.swf\",\"myChartId\", \"400\",\"300\", \"0\", \"1\");"+ 
        " myChart.setXMLUrl(\"Data.xml\");"+ 
        " myChart.render(\"chartContainer\");"+  
    
        "\n});"+ 
        "</script>" 
    
    相關問題