2012-11-22 51 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>" 
    
    相关问题