在Android应用程序中集成FusionChart?

时间:2012-11-22 08:17:03

标签: android fusioncharts

我想在android原生应用程序(而不是phonegap)中集成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 !!!制作条形图

2 个答案:

答案 0 :(得分: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 Control的iOS应用程序有类似的实现,可以在此Blog post的帮助下引用。 [注意:这纯粹是作为参考,并不直接是Android实现。]

答案 1 :(得分: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(无Flash)图表,您的实现变得更加简单,详见以下步骤:

  1. FusionCharts.jsFusionCharts.HC.jsFusionCharts.HC.Charts.jsjquery.min.js复制到所需的文件夹。
  2.   

    但是,只在HTML代码中包含FusionCharts.js。其他JavaScript文件将自动加载。

    1. 不是传递SWF文件的名称,而是传递图表的JavaScript别名。您的代码中需要修改:

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

      Column3D是您尝试呈现的图表的别名。无需在路径前添加前缀。

    2. 不要使用setXMLUrl加载XML。 FusionCharts使用ajax加载XML数据。在大多数浏览器中,不支持本地Ajax(由于安全性限制),它可能会失败。相反,使用Android的资源加载机制(Load file from resource)加载XML,并使用setXMLData方法将数据作为String传递给图表。

      myChart.setXMLData(XMLLoadedAsString);
      
    3. 更多:更加同步的方法是实现这一点,将图表渲染JavaScript代码包装在FusionCharts的ready事件监听器中,如下所示:

          <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>"