当前位置:   article > 正文

百度ECharts Android在线展示统计图表(折线,柱状,饼状图)_在线统计图

在线统计图

做金融类型的应用经常会用到数据的统计报表 诸如折线图 ,  K线图, 饼状图,柱状图  既能形象的表述数据的分布 , 同时又增加了数据的可读性

实现思路: 百度Echarts支持安卓移动端的运用 , WebView加载html, 嵌套JavaScript代码 , 即可动态实现在线图表的展示功能..

下面展示下今天要实现的效果

               

  进入Echarts官网下载页 可以选择自己需要的图表类型 自定义下载js文件 , 精简版,常用版, 完整版 根据需求自定义下载

  • 导入刚下载的图表构建工具   echarts.min.js  到安卓项目的 资产目录(assets)下 这里我使用的 完整版
  • 创建 Htm l文件 , 即要展示的网页 ,  文件名自定义 这里我是 myechart.html
  • 我的assets目录结构如下:

      

  • 接下来就是html文件的代码了 首先我们为ECharts准备一个具备大小(宽高) 的 DOM 并取别名
    <div id="main" style="float: left; width: 600px;height:500px; margin-top: 20px"></div>
  • 导入图表构建工具
    <script src="js/echarts.min.js"></script>
  • 因为我这里要展示多种类型的图表 所以定义了几个方法  下面以折线图为例
  1. //声明Echarts实例
  2. var myChart;
  3. //声明图表配置项和数据
  4. var options;
  5. //symbol的images的格式“image://./images/node.png”最好是能够写绝对路径,加上“//.”回到根目录echart/
  6. var childUrl='./images/child.png';
  7. var lineJson;//用于临时存储折线图json对象, 便于追加数据
  8. //创建折线图
  9. function createLineChart(obj){
  10. lineJson=obj;
  11. options = {
  12. title : {
  13. //text: '脉搏值(次/min)',
  14. text: obj.title,
  15. subtext: 'make by sxt',
  16. x:'left'
  17. },
  18. tooltip: {
  19. trigger: 'axis',
  20. formatter: "脉搏频率 : <br/>{b} - {c} 次/min"
  21. },
  22. xAxis: {
  23. id: 'dataX',
  24. type: 'category',
  25. splitLine:{
  26. show:true
  27. },
  28. axisLabel: {
  29. //formatter: '{value} °C'
  30. formatter: '{value}'
  31. },
  32. data: obj.times //动态展示运动时间
  33. },
  34. yAxis: {
  35. type: 'value',
  36. axisLine: {onZero: true},
  37. splitLine:{
  38. show:true
  39. },
  40. axisLabel: {
  41. //formatter: '{value} km'
  42. formatter: '{value}'
  43. },
  44. min:0,
  45. max:150//在此设置范围
  46. },
  47. dataZoom: [
  48. {
  49. id:'dataZoom',
  50. show:false,
  51. type: 'inside',//inside 为拖动效果
  52. //type: 'slider',//slider为手动更新效果
  53. realtime: true,
  54. filterMode: 'filter',
  55. start: 20,
  56. end: 85,
  57. xAxisIndex: 0
  58. }
  59. ],
  60. series: [{
  61. id: 'dataY',
  62. name: '脉搏频率(次)/(s)',
  63. type: 'line',
  64. smooth: true,
  65. data: obj.steps, //动态展示运动步数数据
  66. lineStyle: {
  67. normal: {
  68. width: 3,
  69. shadowColor: 'rgba(0,0,0,0.4)',
  70. shadowBlur: 10,
  71. shadowOffsetY: 10
  72. }
  73. },
  74. markPoint : {//标注点
  75. data : [//这种方式内部自动计算最值
  76. {
  77. type :'max' ,
  78. name:'最大值' ,
  79. symbol:'image://' + childUrl,
  80. symbolSize: [25, 30],
  81. symbolOffset:[0,'-60%']
  82. },
  83. {
  84. type : 'min',
  85. name: '最小值',
  86. symbol:'image://' + childUrl,
  87. symbolSize: [25, 30],
  88. symbolOffset:[0,'50%']
  89. }
  90. ]
  91. },
  92. markLine : {
  93. data : [
  94. { type : 'average',name: '平均值' }
  95. ]
  96. }
  97. }]
  98. };
  99. }
  • 展示图表
  1. //显示图表
  2. function createChart(type,json){
  3. if(type=='line'){
  4. createLineChart(json);
  5. }
  6. //基于准备好的dom,初始化echarts实例
  7. myChart = echarts.init(document.getElementById('main'));
  8. //使用指定的配置项和数据显示图表。
  9. myChart.setOption(options);
  10. }

  html 文件已写好  到了安卓中调用的时候了 

  • WebView加载html ,记得开启javaScript支持
  1. @SuppressLint("SetJavaScriptEnabled")
  2. private void initListener() {
  3. //进行webwiev的一堆设置
  4. chartshowWb.getSettings().setAllowFileAccess(true);
  5. chartshowWb.getSettings().setJavaScriptEnabled(true);
  6. chartshowWb.setWebViewClient(new WebViewClient() {
  7. @Override
  8. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  9. view.loadUrl(url);
  10. return super.shouldOverrideUrlLoading(view, url);
  11. }
  12. @Override
  13. public void onPageStarted(WebView view, String url, Bitmap favicon) {
  14. super.onPageStarted(view, url, favicon);
  15. dialog.show();
  16. }
  17. @Override
  18. public void onPageFinished(WebView view, String url) {
  19. //最好在这里调用js代码 以免网页未加载完成
  20. chartshowWb.loadUrl("javascript:createChart('line'," + EchartsDataBean.getInstance().getEchartsLineJson() + ");");
  21. }
  22. });
  23. }

 

 开始加载前面写好的html

chartshowWb.loadUrl("file:///android_asset/echart/myechart.html"); 

   至此 通过百度Echarts在线展示统计图表 已完成 关于动态展示数据 我们可以将要展示的数据封装成对象 ,通过Gson将集合转换成Json数据 作为参数传入即可

  项目完整地址 github完整地址 -- https://github.com/good-good-study/HeartRate.git

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/254634?site
推荐阅读
相关标签
  

闽ICP备14008679号