2

我想将fusionchart集成到android本机应用程序中(不是phonegap)。我已经为它编写了如下代码

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 代码在我的电脑浏览器中也不起作用。

我想只使用 fusionchart 在 android 应用程序中制作条形图!!!

4

2 回答 2

1

您需要下载 FusionCharts XT 下载包,以便接收下载包的“Charts”文件夹中提供的必要 JavaScript 和 SWF 文件,以便您渲染 FusionCharts。您可以从这里下载评估包。

此外,请在此处查看在浏览器上创建您的第一个图表的详细过程。

FusionCharts 有望在原生 Android 应用程序上完美运行,前提是这里提到的所有其他标准来呈现 JavaScript 图表(Android 3.0 及更高版本)和 Flash 图表都得到满足。

FusionCharts 没有任何原生 API 可以在 Android 应用程序中呈现图表。因此,您需要使用一些 3rd 方移动开发框架,如 PhoneGap、UIWebView 等以及它们提供的 API 控件,以实现相同的目的。

没有在原生 Android 应用程序中渲染 FusionCharts 的示例,但是,使用 UIWebView 控件的 iOS 应用程序有类似的实现,可以在这篇文的帮助下参考。[注意:这纯粹是作为参考,并不是直接的 Android 实现。]

于 2013-04-26T13:40:00.293 回答
0

您可以从 FusionCharts XT 包中获取 SWF 和 JS 文件。可从http://www.fusioncharts.com/downloads下载试用版。您将从文件Download Pack > Charts夹中获取这些文件。

通常,您需要将这些文件放在文件/assets夹中。这些文件与apk. 您可以使用路径访问文件 - /assets/....

参考:从资源加载文件

请记住,如果您的目标是 Android v3+,则不需要渲染 Flash 图表。因此,您不需要复制这些SWF文件。FusionCharts 提供 JavaScript(无 Flash)图表,您的实现变得更加简单,详细步骤如下:

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

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

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

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

    Column3D是您尝试渲染的图表的别名。无需为其添加路径前缀。

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

    myChart.setXMLData(XMLLoadedAsString);
    

更多:实现这一点的更同步的方法是将图表渲染 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>"
于 2013-04-26T12:39:29.323 回答